Bonjour,
J'essaye depuis plusieurs jours d'écrire LA requête PL/SQL qui va bien pour répondre à la problématique suivante.
Dans une table où je stocke 1 préférence et 1 intervalle, je souhaite les connaître les dates où je change de préférence sachant que je dois toujours récupérer la préférence minimale :
Je cherche donc à obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 INSERT INTO t (preference, start_date, end_date) VALUES (996, TO_DATE ('12/01/2008 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE ('10/12/2009 23:59:59', 'MM/DD/YYYY HH24:MI:SS')); INSERT INTO t (preference, start_date, end_date) VALUES (990, TO_DATE ('09/01/2009 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE ('07/31/2010 23:59:59', 'MM/DD/YYYY HH24:MI:SS')); INSERT INTO t (preference, start_date, end_date) VALUES (984, TO_DATE ('05/08/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE ('05/12/2010 23:59:59', 'MM/DD/YYYY HH24:MI:SS')); INSERT INTO t (preference, start_date, end_date) VALUES (983, TO_DATE ('05/30/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE ('06/15/2010 23:59:59', 'MM/DD/YYYY HH24:MI:SS'));
J'essaye de m'inspirer de plusieurs articles dont ceux de AskTom mais je n'arrive pas à comprendre la logique des requêtes récursives/analytiques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 01/09/2009 -- on passe de 996 à 990 08/05/2010 -- on passe de 990 à 984 12/05/2010 -- on passe de 984 à 990 (à nouveau) 30/05/2010 -- on passe de 990 à 983 15/06/2010 -- on passe de 983 à 990 (à nouveau)
http://asktom.oracle.com/pls/asktom/...76000346581356
Pourriez-vous m'aider à écrire ou m'expliquer comment Tom en est arrivé à écrire la requête au début de cet article (j'arrive à comprendre celle d'Anthony un peu plus loin dans ce même article ceci dit) ?
Merci.
C.
PS : je vais être absent la semaine prochaine mais n'hésitez pas à me poser des questions ou faire des propositions et j'y répondrai dès mon retour.
Partager