b3rz3k
Messages postés8Date d'inscriptionjeudi 10 février 2011StatutMembreDernière intervention18 mai 2011
-
17 mai 2011 à 16:14
b3rz3k
Messages postés8Date d'inscriptionjeudi 10 février 2011StatutMembreDernière intervention18 mai 2011
-
18 mai 2011 à 08:31
Bonsoir,
J'ai un petit problème pour une requête SQL,
J'ai cherché tout l'après-midi et je n'y suis pas arrivé, j'ai l'impression de n'être pas loin de la solution ^^
En gros j'ai une table T_ECARTectraChimie, dans laquelle je veux verifier que pour un PART et son BATCH, la somme de la quantité des ECarts dans SAP est égal à la somme de la quantité des Ecarts dans PRESTA
SELECT T_ECARTECTRAChimie.BATCH_ECART
FROM T_ECARTECTRAChimie
where ((PROVENANCE_ECART = "PRESTA" and sum(QUANTITE_ECART)))=
(SELECT T_ECARTECTRAChimie.BATCH_ECART
FROM T_ECARTECTRAChimie
where ((PROVENANCE_ECART = "SAP" and sum(QUANTITE_ECART))));
le petit problème c'est que je ne peux aps utiliser de fonction agrégat dans le Where, donc je peux utiliser un Having, mais du coup je ne sais pas comment faire la jointure interne de cette table pour qu'à la sortie il me donne les Batch dont leur quantités chez SAP sont égales à celles chez PRESTA.
Il faut savoir que pour une même BATCH, chez SAP on a par exemple 630 en quantité et chez PRESTA 630 aussi mais reparti sur plusieurs localisation, d'où le sum(...).
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 mai 2011 à 19:48
Salut
Perso, j'aurai tenté ça :
Select T1.BATCH_ECART
From T_ECARTECTRAChimie T1,
T_ECARTECTRAChimie T2
Where T1.BATCH_ECART = T2.BATCH_ECART
And T1.PROVENANCE_ECART = "PRESTA"
And T2.PROVENANCE_ECART = "SAP"
And Sum(T1.QUANTITE_ECART) = Sum(T2.QUANTITE_ECART)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
b3rz3k
Messages postés8Date d'inscriptionjeudi 10 février 2011StatutMembreDernière intervention18 mai 2011 18 mai 2011 à 08:31
D'accord,
je viens de tester le code SQL de jack, et ça ne marche pas car on ne peut pas avoir un aggregat dans une fonction Where.
Du coup j'ai pensé au Having, avec le code suivant :
SELECT T1.BATCH_ECART
FROM T_ECARTECTRAChimie AS T1, T_ECARTECTRAChimie AS T2
WHERE (T1.BATCH_ECART=T2.BATCH_ECART And T1.PROVENANCE_ECART="PRESTA" And T2.PROVENANCE_ECART="SAP")
HAVING (Sum(T1.QUANTITE_ECART)=Sum(T2.QUANTITE_ECART));
Mais je ne peux pas car :
" vous êtes entrain d'essayer d'executer une requête qui n'inclus pas l'expression BATCH_ECART comme une fonction d'aggrégat.