Oracle sélectionnez la date la plus récente d'enregistrement
Je suis en train d'essayer de trouver l'enregistrement le plus récent basé sur un champ de date. Lorsque j'ai mis les derniers = 1 dans la clause where, j'obtiens une erreur. S'il vous plaît aider si possible. La DATE est le domaine où je suis le tri par. J'ai essayé les deux dernières = 1 et plus tard = '1'
SELECT
STAFF_ID,
SITE_ID,
PAY_LEVEL,
ROW_NUMBER() OVER (PARTITION BY STAFF_ID ORDER BY DATE DESC) latest
FROM OWNER.TABLE
WHERE END_ENROLLMENT_DATE is null
AND latest = 1
- Des alternatives?
- ...et vous ne voulez probablement pas le dernier, mais le dernier enregistrement: date <= SYSDATE (éviter de futurs dossiers datés, dire prévu pour l'augmentation de salaire le mois prochain...)
Vous devez vous connecter pour publier un commentaire.
vous ne pouvez pas utiliser les alias de liste de sélection à l'intérieur de la clause where (en raison de la Ordre d'Évaluation d'une instruction SELECT)
aussi vous ne pouvez pas utiliser
OVER
clause à l'intérieur OÙ la clause - "Vous pouvez spécifier des fonctions analytiques de cette clause dans la liste de sélection ou de clause ORDER BY." (citation de docs.oracle.com)En supposant staff_id + date de former un royaume-uni, c'est une autre méthode:
je pense que je vais l'essayer avec MAX à quelque chose comme ceci:
ensuite le lien dans vos autres colonnes: