Bonjour à tous,

J'ai cette requête :

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;
sorder --> commandes
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|
sinvoiced --> factures/avoir
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|
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.

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 :

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
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 ?

Merci d'avance.