0
votes

Comment obtenir le dernier enregistrement daté pour chaque année pour un employé

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      


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes

J'utiliserais Row_Number Fonction analytique: xxx


0 commentaires

0
votes

Vous pouvez également le faire avec une sous-requête corrélée: xxx

Il serait intéressant de savoir ce qui est plus rapide - le row_number () approche ou corrélation sous-requête.


0 commentaires