Bonjour,
je n'arrive pas à en SQL à extraire d'une table la dernière écriture pour un groupe de champ donnés.
Je suis sous Oracle 11.
Ma table contient une liste d'évènement, classé par date. Ma vue doit consister à récupérer pour chaque groupe unique (champs app_save/hostname/upm) le dernier status (decode sur le champ poids, OK ou KO).
J'y arrive presque mais à cause du champ poids dans mon group by je peux avoir des tuples dans mon résultat.
Ma vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select app_save instance_oracle, max(exec_date) last_update, substr(upm,5,length(upm)) metier, decode(poids,0,'TSMSAVOK','TSMSAVECH') code, i.hostname serveur from instances i inner join serveurs s on i.hostname = s.hostname where type_save = 'archive_oracle' and gestion_bt is not null group by upm,i.hostname,app_save,poids order by last_update desc;
Le résultat que ça me rend :
Mais aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 P01559AP10 23/05/16 FGAT TSMSAVOK parva7111047 TBO4FRP0 23/05/16 FGAT TSMSAVOK parva7118330 P03580AP10 23/05/16 UPSI TSMSAVOK s00va9939197 DDB1FRP0 23/05/16 BDDF TSMSAVOK parva7214145 TSD7FRP0 23/05/16 FGAT TSMSAVOK parva7409892 TSD9FRP0 23/05/16 FGAT TSMSAVOK parva7409892 ATE1EUP0 23/05/16 PF TSMSAVOK s00va9931372 GGA1FRP2 23/05/16 BDDF TSMSAVOK s00va9922872 STN3FRP0 23/05/16 FGAT TSMSAVOK parva7111047
Sauf que moi je n'aimerais avoir que la dernière ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ABE1FRB0 09/06/15 FGAT TSMSAVECH parva7421106 ABE1FRB0 23/05/16 FGAT TSMSAVOK parva7421106
J'ai bien la solution de créer une autre table que je chargerais à la main et grâce à un trigger je peuplerais le champ "code" et last_update, mais j'aimerais vraiment passer par une vue si seulement c'est possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ABE1FRB0 23/05/16 FGAT TSMSAVOK parva7421106
Si vous avez des pistes, je suis preneur
Bien à vous,
CH
Partager