|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 46 ![]() |
Bonjour,
J'ai un requete à faire, mais je bloque... Je suis assez léger en sql. Donc, j'ai le tableau suivant: Pers couleur date_debut date_fin A bleu 18/11/2010 19/02/2011 A vert 20/02/2011 05/05/2011 A vert 06/05/2011 31/12/2099 B vert 18/11/2010 05/02/2011 B bleu 06/02/2011 09/04/2011 B vert 10/04/2011 31/12/2099 C vert 18/11/2010 25/03/2011 C bleu 26/03/2011 31/12/2099 Je ne dois garder que les occurrences pour chaque personne ayant pour derniere couleur vert (ici A et B). ET uniquement la ligne ayant la couleur verte et qui a été la première occurrence d'une suite de vert (ici la deuxième ligne de A et la dernière de B). Je n'arrive pas construire ma requête. Quelqu'un a une idée? |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Que donne cette requête non testée ?
Code :
Si ce cas est envisageable il faudrait expliquer quelle liste doit être retenue. |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 46 ![]() |
Bonjour,
C'est vraiment excellent même si j'ai du mal à comprendre l'ensemble de la requêteMerci pour ton aide. J'attends de voir si j'ai besoin d'un petit complément avant de mettre résolu. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Pour mieux comprendre la requête regarde LAG et LEAD
Puis execute le WITH seul pour visualiser les données : Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : avril 2011 Messages : 46 ![]() |
Bonjour,
J'ai bien regardé, ce sont des fonctions analytiques. C'est vraiment performant! Pour répondre à la remarque de ton premier message, j'aimerais pouvoir indiquer que la suite qu'il faut utiliser est la dernière (celle où la dernière ligne de la suite a pour date de fin 31/12/2099). J'ai essayé le code ci-dessous mais cela ne marche pas (il ne me renvoie que les lignes dont la date de fin est le 31/12/2099): Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
En incrémentant debut_liste et en prenant la valeur max ça devrait fonctionner :
Code :
|
||
|
|
00
|
|
|
#7 | ||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Sans sous-requête supplémentaire, ça pourrait donner ça :
Code :
[edit] Je viens de faire un test et la requête avec MAX GROUP BY devrait en fait s'écrire : Code :
|
||||
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : avril 2011 Messages : 46 ![]() |
Merci beaucoup, la seconde requête marche très bien.
Bonne journée! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com