Bonjour à tous,
J'ai cette requête :
sorder --> commandes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT SUM(s.netpri * s.qty) AS netpri, s3.zpjt FROM sinvoiced s INNER JOIN sinvoicev s2 ON s2.num = s.num LEFT JOIN sorderq s3 ON s.sohnum = s3.sohnum AND s.soplin = s3.soplin WHERE s2.bpcinv = '00001' AND s2.bpaadd = 'C01' AND YEAR(s2.invdat) = '2020' AND MONTH(s2.invdat) BETWEEN 1 AND 12 GROUP BY s3.zpjt;
sinvoiced --> factures/avoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sohnum |qty |zpjt |soplin| -------+-----+------+------+ NORAA1 | 1.00|200201| 1000| NORAA1 |10.00|200201| 2000| NORAA2 | 2.00|200604| 3000| NORAA3 |10.00| | 4000| NORAA3 |10.00| | 5000|
Je ne détail pas sinvoicev car elle sert uniquement à filtrer les commandes par rapport à un numéro de client, une date et le INNER JOIN est ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 num |sohnum|soplin|netpri| -------+------+------+------+ FACBBB1|NORAA1| 1000| 7.07| FACBBB1|NORAA1| 2000| 8.63| FACBBB2|NORAA2| 3000| 2.04| FACBBB3|NORAA3| 4000| 8.02| FACBBB3|NORAA3| 5000| 8.02| AVCDDD1| | | 20.93| AVCDDD1| | | 21.02|
Le résultat donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 netpri |zpjt | -------+------+ 41.95|[NULL]| --> correspond à AVCDDD1 160.04|| --> correspond à FACBBB3 87.70|200201| --> correspond à FACBBB1 2.04|200604| --> correspond à FACBBB2
Mon problème avec est le NULL, c'est un avoir qui devrait être déduit à des factures n'ayant pas de valeur zpjt. Le résultat devrait être :
Est-ce qu'il y a moyen de le faire en une requête ou bien est-ce que je vais devoir faire deux requêtes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 netpri |zpjt | -------+------+ 118.09| | --> correspond à FACBBB3 - AVCDDD1 87.70|200201| --> correspond à FACBBB1 2.04|200604| --> correspond à FACBBB2
Merci d'avance.
Partager