Bonjour,
Mon titre n'est peut être pas le plus descriptif possible, mais me voici confronté au pb suivant, je pensais resoudre le problème avec une sous requête mais je n'y arrive pas :-s :
Mon jeu de données ressemble à :
SELECT id, Dt, Param1, Param2 FROM maTable ORDER BY Dt DESC
-id---Dt------------------------Param1---Param2
-01--2009-01-13 18:46:02.000---p1_5-----1
-02--2009-01-13 16:07:38.000---p1_5-----1
-03--2009-01-12 16:17:23.000---p1_3-----1
-04--2009-01-12 13:34:07.000---p1_3-----1
-05--2009-01-12 12:49:31.000---p1_2-----1
-06--2009-01-11 18:52:09.000---p1_5-----1
-07--2009-01-11 18:51:49.000---p1_5-----2
-08--2009-01-11 17:54:51.000---p1_5-----2
-09--2009-01-11 14:57:09.000---p1_3-----2
-10--2009-01-10 14:25:05.000---p1_3-----2
-11--2009-01-10 14:14:59.000---p1_1-----2
-12--2009-01-08 22:08:26.000---p1_5-----1
Je voudrais faire un GROUP BY Sur Param1, Param2 mais en gardant une notion de temps : La date pour les enregistrements retournées doit être la première date chronologique "du GROUP BY" (donc faire un GROUP BY sans tenir compte des dates réelles mais en créant par exemple une DT2 correspondant à la première date avant changement), mais si un "groupe" se retrouve avant ou après, je doit quand même le récupérer.
Mon jeu de données devrait donc être le suivant :
-02--2009-01-13 16:07:38.000---p1_5-----1
-04--2009-01-12 13:34:07.000---p1_3-----1
-05--2009-01-12 12:49:31.000---p1_2-----1
-06--2009-01-11 18:52:09.000---p1_5-----1
-08--2009-01-11 17:54:51.000---p1_5-----2
-10--2009-01-10 14:25:05.000---p1_3-----2
-11--2009-01-10 14:14:59.000---p1_1-----2
-12--2009-01-08 22:08:26.000---p1_5-----1
Du coup, je me demande si on peut vraiment parler de GROUP BY vu que je dois garder l'enregistrement précédent (ex. id:12) même si celui ci existe déjà (en Id:02). Du coup, dois-je obligatoirement passer par un curseur pour manipuler les dates ou existe-il y moyen en utilisant des requêtes ?
Merci de votre aide, en ésperant pouvoir m'en sortir ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Damien.
Partager