Tous d'abord mon code :
Explication de mon code :
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
28 SELECT CODARTICLE,ENTREE,SORTIEP,SORTIEN, (SORTIEP - SORTIEN)CALC FROM (SELECT DISTINCT(ARARTI) CODARTICLE FROM AUVERLOT.ARTICLEUCD WHERE THCODE01 = 'M' ) LISTARTICLE LEFT OUTER JOIN (SELECT ARARTI ARTE, SUM(SYQMVT) ENTREE FROM AUVERLOT.ARTICLEUCD WHERE THCODE01 = 'M' AND SYKNMV = 'E' AND (SYKCMV = 'EE' OR SYKCMV = 'EP') GROUP BY ARARTI ) TABLEE ON CODARTICLE = ARTE LEFT OUTER JOIN (SELECT ARARTI ARTSP, SUM(SYQMVT) SORTIEP FROM AUVERLOT.ARTICLEUCD WHERE THCODE01 = 'M' AND SYKNMV = 'S' AND (SYKCMV = 'PS' OR SYKCMV = 'IP') GROUP BY ARARTI ) TABLES ON CODARTICLE = ARTSP LEFT OUTER JOIN (SELECT ARARTI ARTSN, SUM(SYQMVT) SORTIEN FROM AUVERLOT.ARTICLEUCD WHERE THCODE01 = 'M' AND SYKNMV = 'S' AND (SYKCMV = 'NS' OR SYKCMV = 'IN') GROUP BY ARARTI ) TABLES ON CODARTICLE = ARTSN
J'ai une grosse table auverlot.articleucd qui contient des mouvements de stock, je fais un premier select pour avoir la liste de mes articles et ensuite je fais 3 jointures externes qui permette de ressortir le nombre d'entrée,de sortie positive et de sortie négative.
La première ligne de mon code permet de ressortir ces info sur une seule ligne par article et de faire un calcul (CALC) qui est la différence entre les sortie positive et les sortie négative.
et maintenant mon problème : N'ayant pas toujours de sortie négative de stock, lorsqu'il essaie de faire le calcul de CALC dans ce cas là il n'arrive pas à sortir de résultat.
exemple de résultat :
je pense que mon probleme viens du fait que la requete qui calcul le nombre de sortie de stock returne null quand il n'y a pas de sortie de stock et donc la soustraction ne peux se faire et donc retourne null aussi.CODARTICLE;ENTREE;SORTIEP;SORTIEN;(SORTIEP - SORTIEN)CALC
article1;50;15;5;10;
article2;70;25; ; ; <-> probleme
article3;55;30;10;20;
Ma question est : pouvons nous faire un truc en SQL du genre : "SI SUM(SYQMVT) = NULL return 0" ?
Je ne sais pas si je suis très compréhensible donc merci d'avance
Partager