Hello tout le monde,
Je vais user de pas mal de la fonction first_value pour prendre le dernier enregistrement en fonction d'une date.
Exemple
select first_value(libelle) over (partition by idcart order by dateevt desc) last_libelle from evenement
Mais malheureusement, on a souvent besoin de bien plus que d'un champs, d'autres aussi que l'on doit remonté.
Malheureusement Oracle a fait la connerie (mes mots ne sont pas assez fort, tellement je ne les comprends pas sur ce point là).
En plus du dernier libellé de la table évenement, je veux recupérer le libellé detailllé ainsi que la ville. En ce moment, j'ai plutot tendance à faire ceci :
select first_value(libelle||';'||libelleDetail||';'||ville) over (partition by idcart order by dateevt desc) last_libelle_ville from evenement
Comme j'exporte via un fichier lancé en SQL Plus, cela passe un peu inapercu dans le fichier CSV mais je ne trouve pas cela très propre. Mais ces idiots m'y obligent.
1 2 3 4 5 6
|
select
first_value(libelle) over (partition by idcart order by dateevt desc) last_libelle
first_value(libelleDetail) over (partition by idcart order by dateevt desc) last_libelle_detail
first_value(ville) over (partition by idcart order by dateevt desc) last_ville
from evenement |
Je trouve cela débile de redifinir une fenètre pour que Oracle repartitionne et retrie de nouveau.
Qu'est ce que vous en pensez?
Partager