Bonjour,

j'aimerais récupérer dans une table le max d'un montant avec des données associées et le tout groupé par "Nom" et "numéro de contrat".
Actuellement j'ai ça

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SELECT  C1.NOM,
            C1.NUM_CTA,
            C1.MNT_FACTURE,
            C1.PRENOM,
            C1.ADRESSE
FROM    CLIENT C1
WHERE   C1.MNT_FACTURE = (  SELECT MAX(C2.MNT_FACTURE) 
                            FROM    CLIENT C2
                            WHERE   C1.NOM      = C2.NOM
                            AND     C1.NUM_CTA  = C2.NUM_CTA)
Le problème c'est que je me fais 2 lectures full sur ma table CLIENT qui fait presque 1 million de lignes, ce qui prend du temps.

Bref j'aimerais faire un truc optimisé mais je ne trouve aucune bonne idée
du style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT  C1.NOM,
            C1.NUM_CTA,
            MAX(C1.MNT_FACTURE),
            C1.PRENOM
            C1.ADRESSE
FROM    CLIENT C1
GROUP BY C1.NOM,  C1.NUM_CTA
Alors forcément ça ne marche pas le truc au dessus mais c'est comme ça que j'aimerais faire


Si quelqu'un a une bonne réponse à m'apporter je suis preneur
Merci