Bonjour,
J'ai un petit soucis dans une requête que j'ai tapé moi même. Je ne suis peut-être pas dans la bonne rubrique du forum, mais sachant que Windev connait (il me semble) quelques limites niveau SQL, je préfère décrire mon problème ici.
J'ai une table CADuMois (Chiffre d'affaire du mois), dans laquelle sont enregistrés des chiffres d'affaires.
Un chiffre d'affaire concerne un Contact, ces deux tables sont liées.
Un Contact est géré par un Collaborateur, ces deux tables sont liées.
Pour faire des statistiques, j'ai eu à faire une requête, sortant le top 10 des meilleurs Contacts (selon leur chiffre d'affaire du mois). Cette requête fonctionne bien:
On m'a ensuite demandé de faire une autre statistique. Je dois sortir la somme des chiffres d'affaire du mois des Contacts hors du top 10. J'ai d'abord essayé d'isoler ces Contacts, en sortant les ID_Contacts n'étant pas dans les ID du top 10. J'utilise un "NOT IN", mais une erreur SQL s'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SELECT TOP 10 CADuMois.CA_montant AS CA_montant, Contacts.con_code AS con_code, Contacts.con_raison_sociale AS con_raison_sociale, Contacts.con_tel_fact AS con_tel_fact, Contacts.ID_contacts AS ID_contacts FROM Contacts, CADuMois WHERE Contacts.ID_contacts = CADuMois.ID_contacts AND ( Contacts.ID_Collaborateur = {id_collabo} AND CADuMois.CA_mois = {combo_mois} AND CADuMois.CA_annee = {sai_annee} ) ORDER BY CA_montant DESC
L'erreur: "Warning : Mot ORDER inattendu"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 SELECT CADuMois.ID_contacts, CADuMois.CA_montant FROM CADuMois, Contacts WHERE CADuMois.CA_mois = {le_mois} AND CADuMois.CA_annee = {l_annee} AND Contacts.ID_Collaborateur = {id_collabo} AND CADuMois.ID_contacts NOT IN ( SELECT TOP 10 CADuMois.ID_contacts FROM Contacts, CADuMois WHERE CADuMois.ID_contacts = Contacts.ID_contacts AND ( CADuMois.CA_mois = {le_mois} AND CADuMois.CA_annee = {l_annee} AND Contacts.ID_Collaborateur = {id_collabo} ) ORDER BY CADuMois.CA_montant DESC )
Je ne peux pas me passer de ce classement, puisque c'est lui qui détermine les 10 meilleurs Contacts ...
Je pense que mon problème serait résolu si j'avais rusé en programmation, mais je devine que ce que je souhaite faire est possible directement en SQL ! Je ne sais simplement pas comment m'y prendre.
Quelqu'un aurait-il une piste à me donner ?
Cordialement,
Ludovic Marquet
Partager