Gérer les tuples dans une vue
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:
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:
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:
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:
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