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 :
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
Mais aussi :

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
Sauf que moi je n'aimerais avoir que la dernière ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Si vous avez des pistes, je suis preneur

Bien à vous,

CH