Je travaille sur l'historique des performances des employés Détails Oracle BI Signaler. Dans lequel j'ai été coincé avec le scénario ci-dessous. Chaque employé a plusieurs rangées pour chaque année. Mais je voulais extraire seulement le dernier enregistrement daté pour chaque année pour tous les employés.
Exemple: p>
Données disponibles: P>
Employee_number Effective_date Name Performance_rating Comments ----------------- ---------------- ------- -------------------- ---------- 1001 01/12/2017 Emp01 4.0 Good 1001 01/06/2018 Emp01 3.8 Good 1001 01/08/2019 Emp01 4.0 Good
3 Réponses :
Essayez avec la fonction de fenêtre Row_Number () CODE> et voici le Démo . select
Employee_number,
Effective_date,
Name,
Performance_rating,
comments
from
(
select
Employee_number,
Effective_date,
Name,
Performance_rating,
comments,
row_number() over (partition by Employee_number, extract(year from Effective_date) order by Effective_date desc) as rn
from yourTable
) subq
where rn = 1
J'utiliserais Row_Number code> Fonction analytique:
Vous pouvez également le faire avec une sous-requête corrélée: Il serait intéressant de savoir ce qui est plus rapide - le row_number () code> approche ou corrélation sous-requête. P> p>