MAX(DATE) - SQL ORACLE
Je veux sélectionnez uniquement les dernières membership_id de table user_payments
de l'utilisateur avec le user_id égal à 1.
C'est comment la table user_payment ressemble:
PAYM_ID USER_ID MEMBSHIP_ID PAYM_DATE
---------- ---------- ----------- -------------------------------
1 1 1 18-DEC-09 12.00.00.000000000 AM
2 1 2 18-DEC-10 12.00.00.000000000 AM
3 1 2 18-DEC-11 12.00.00.000000000 AM
4 2 3 17-MAR-11 12.00.00.000000000 AM
5 3 3 18-JUN-12 12.00.00.000000000 AM
6 4 2 17-FEB-12 12.00.00.000000000 AM
7 5 2 18-FEB-11 12.00.00.000000000 AM
8 5 2 18-FEB-12 12.00.00.000000000 AM
9 6 1 01-JUN-12 12.00.00.000000000 AM
10 7 1 03-FEB-11 12.00.00.000000000 AM
11 7 2 03-FEB-12 12.00.00.000000000 AM
J'essaie sans succès le code suivant:
SELECT MEMBSHIP_ID
FROM user_payment
WHERE user_id=1 and MAX(paym_date);
Et j'obtiens cette erreur:
SQL Error: ORA-00934: fonction de groupe n'est pas autorisé ici
00934. 00000 - "fonction de groupe n'est pas autorisé ici"
Comment puis-je résoudre ce problème? merci à l'avance!
OriginalL'auteur Cristy | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur manurajhada
OriginalL'auteur shawnt00
Essayer:
Ou:
de même, la fonction row_number() fonction de classement me sert bien
OriginalL'auteur A.B.Cade
Oracle 9i+ (peut-être 8i trop) a la PREMIÈRE/DERNIÈRE des fonctions d'agrégation, que de faire le calcul sur des groupes de lignes en fonction de la ligne de rang dans le groupe. En supposant que toutes les lignes comme un seul groupe, vous obtiendrez ce que vous voulez sans les sous-requêtes:
OriginalL'auteur Andrew
Essayer avec:
OriginalL'auteur Dyna