Bonjour,
Je suis sous oracle SQL developper.
Actuellement je travail sur une purge d'une base de donnée. Nous avons dans une table [I]Task[I] des ID. Je dois donc m'occuper d'un ID en particulier qui correspond à ce qu'on appelle : l'INVENTAIRE. Jusque là niveau code tous va bien. Puis on me demande de garder les 3 dernières lignes de cette tâche INVENTAIRE. J'ai donc créé ce code permettant de prendre la date de création de la ligne (real_start_date) :
Puis on me dis de garder les 3 dernières lignes par sources. Ce qui fait intervenir l'idproduct _source et type_product_source. Quand on dis par sources on veut dire que les idproduct_source et les type_product_source soit exactement les même dans les 3 lignes. Voilà mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select * from (select * from task order by real_start_date desc) where IDTASK_TYPE = 163 and real_start_date is not null and rownum <= 3 ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select * from (select * from task order by real_start_date desc) where IDTASK_TYPE = 163 and real_start_date is not null and rownum <= 3 ;Le problème étant que je ne récupère que les 3 dernières lignes mais que d'une seule source...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 select * from task t WHERE NOT EXISTS( Select * from task ta where t.idproduct_source = ta.idproduct_source having(max(ta.idproduct_source) = t.idproduct_source) ) and IDTASK_TYPE = 163 and real_start_date is not null and idproduct_source is not null ;
J'ai fais plusieurs recherches sans arriver à trouver réponse à ma question... Ce qui m'embête bien... Pouvez vous m'aidez s'il vous plaît.
Partager