Bonjour,
je n'arrive pas a trouver la requête adéquat a ce que je veut faire, donc je viens demander un peu d'aide! Je vais illustrer avec un exemple simple :
J'ai une table ABCD avec 3 champs numérique ELEVE, EXAMEN, NOTE. Cette table contient par exemple :
Je souhaite obtenir les résultat de l'examen 3, avec en rappelle les notes obtenues par les élèves lors de l'examen précédant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 1 1 11 2 1 22 3 1 33 4 1 44 1 2 111 3 2 333 4 2 444 1 3 1111 2 3 2222 5 3 5555
Ma requête est la suivante :
Le résultat est alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select a1.eleve, a1.examen, a1.note, max(a2.examen), a2.note from ABCD a1, ABCD a2 where a1.examen=3 and a2.examen(+) < 3 and a1.eleve = a2.eleve(+) group by a1.eleve, a1.examen, a1.note, a2.note
Alors que je ne voudrais obtenir que les lignes en rouge (le rappel du dernier examen, pas de tous les examens effectués!)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1 3 1111 1 11 1 3 1111 2 111 2 3 2222 1 22 5 3 5555
Je pensais que le MAX/GROUP BY répondrais a mon besoin, mais apparemment pas!
Avez vous une idée?
J'espère que j'ai réussi a bien exposé mon problème!
Partager