|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() jerome Administrateur systèmes et réseaux Inscription : décembre 2012 Messages : 5 ![]() |
Bonjour,
J'ai voulu essayé de faire une fonction pivot mais sans succés pourriez-vous me dire si la fonction pivot est bien celle qui faut que j'utilise pour faire ce dont je souhaite : j'ai une table suivante : Mat Nom Type Hours Date --- ------ ---- ----- ---------- 001 jerome eff 7 03/12/2012 001 jerome th 8 03/12/2012 002 andree eff 6 03/12/2012 002 andree th 8 03/12/2012 001 jerome eff 8 04/12/2012 002 andree eff 8 04/12/2012 Mat Nom eff th Date --- ------ --- ---- ---------- 001 jerome 7 8 03/12/2012 002 andree 6 8 03/12/2012 001 jerome 8 NULL 04/12/2012 002 andree 8 NULL 04/12/2012 PS : La base de donnée est un serveur SQL 2012 Merci, Jérôme |
|
|
00
|
|
|
#2 |
![]() ![]() |
Je vous confirme, c'est bien la fonctionnalité PIVOT dont vous avez besoin.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 | ||||
|
Membre chevronné
![]() |
Code :
Code :
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
||||
|
|
11
|
|
|
#4 |
|
Invité régulier
![]() jerome Administrateur systèmes et réseaux Inscription : décembre 2012 Messages : 5 ![]() |
Merci Islamov2000,
Ton code m'as beaucoup aidé je dirais meme plus ça fonctionne avec ma table de production ^^ J'ai seulement utilisé COALESCE à la place de mvl car c'est sur un serveur SQL 2012. Je te remercie encore de ton aide précieuse @bientot car je doit integrer une deuxieme table pour avoir un peu plus de données si vraiment je n'y arrive pas je reviendrais demander de l'aide Jérôme |
|
|
10
|
|
|
#5 |
|
Invité régulier
![]() jerome Administrateur systèmes et réseaux Inscription : décembre 2012 Messages : 5 ![]() |
Bon finalement je séche encore ...
Voila l'exposé : 2 tables : ABSENCE , TOTAL pour la table TOTAL : Mat Nom Type Hours Date --- ------ ---- ----- ---------- 001 jerome eff 7 03/12/2012 001 jerome th 8 03/12/2012 002 andree eff 6 03/12/2012 002 andree th 8 03/12/2012 001 jerome eff 8 04/12/2012 002 andree eff 8 04/12/2012 002 andree th 8 05/12/2012 Mat Nom Type2 Hours Date --- ------ ---- ----- ---------- 001 jerome cp 7 04/12/2012 002 andree rtt 6 05/12/2012 Il me faudrait enfaite combiner les 2 tables pour avoir ceci comme résultat Mat Nom eff th cp rtt Date --- ------ ---- ---- ---- ---- ---------- 001 jerome 7 8 NULL NULL 03/12/2012 002 andree 6 8 NULL NULL 03/12/2012 001 jerome 8 NULL 7 NULL 04/12/2012 002 andree 8 NULL NULL NULL 04/12/2012 002 andree NULL 8 NULL 6 05/12/2012 D'avance merci pour votre soutient Jerôme |
|
|
00
|
|
|
#6 | ||||
|
Membre chevronné
![]() |
Code :
Code :
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
||||
|
|
11
|
|
|
#7 | ||
![]() ![]() |
L'opérateur PIVOT reste plus rapide à utiliser ici quand même :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#8 |
|
Membre chevronné
![]() |
@Waldar:
Est ce que PIVOT et UNPIVOT sont des fonctions de SQL standard. En Oracle, ces fonctions ne sont supportées qu'à la version 11g.
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
|
|
00
|
|
|
#9 | ||||
|
Membre chevronné
![]() |
Et je propose une autre solution plus simple en SQL standard.
Code :
Code :
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
||||
|
|
10
|
|
|
#10 | |
![]() ![]() |
Bonjour,
Citation:
Cordialement,
__________________
« Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. » - Confucius - ![]() Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL Tous les cours Office
|
|
|
|
00
|
|
|
#11 | |
![]() ![]() |
À ma connaissance c'est une fonctionnalité hors-norme, mais c'est plutôt SQLPro qui pourra confirmer si ça a évolué depuis son article sur les nouveautés de SQL-Server 2005 :
Citation:
On peut effectivement s'en passer avec la dernière méthode proposée par islamov2000, le seul avantage de la fonction PIVOT est qu'il est syntaxiquement plus rapide à écrire.
__________________
Email : http://scr.im/waldar |
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() jerome Administrateur systèmes et réseaux Inscription : décembre 2012 Messages : 5 ![]() |
Bonjour et merci pour toute vos réponse.
@Waldar : J'ai testé la fonction pivot mais sans succés dans l'exemple vous avez créé une table "totabs" mais je doit pas passer par une table temporaire je peut seulement interoger la base je n'arrive donc pas à la faire fonctionner. c'est surement du a mon manque de connaisance en SQL :\ @Islamov2000 : J'ai voulu tester votre solution plus simple en SQL , mais idem sans succé car j'ai une erreur sur le AS pour attribuer un nom a l'union ... Pour info j'avais plus de type dans la table absence j'ai donc du modifier un peu le code mais je ne sais pas si c'est propre mais cela fonctionne : Code :
Jérôme |
||
|
|
00
|
|
|
#13 | |||
![]() ![]() |
Citation:
Compte tenu que vous avez déjà vos tables TOTAL et ABSENCE, votre requête doit commencer ici : Code :
__________________
Email : http://scr.im/waldar |
|||
|
20
|
|
|
#14 |
|
Membre chevronné
![]() |
Moi je recommande la deuxieme solution que j'ai proposé. elle est courte, plus lisible et facile à entretenir.
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
|
|
10
|
|
|
#15 | ||
|
Invité régulier
![]() jerome Administrateur systèmes et réseaux Inscription : décembre 2012 Messages : 5 ![]() |
Encore merci a vous
Donc j'ai pris la solution de islamov2000 et cela fonctionne comme je le souhaite. J'ai du ajouté plusieurs type par colonne j'ai donc utilisé IN ( ... , ... , ... ) est-ce la meilleur methode ? Sinon j'avais une interrogation comment il fait pour trouver le type2 car on lui demande de verifier si type = 'MAL' qui se trouve dans type2 ? ça fonctionne mais je voulais savoir comment voici la requete modifié : Code :
Jérôme |
||
|
|
10
|
|
|
#16 |
|
Membre chevronné
![]() |
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com