bonjour à tous,
je faire une gestion de stock par numéro de lot et par date de péremption et je galère depuis quelques jours sur une requête en sql server 2008 r2. ce que je veux faire c'est que si pour un article j'ai les données suivantes:
CODART: M0001, DATFABRIC: 10/10/2010 DATPEREMP: 10/10/2015 NUMLOT: 30 QTE: 0
CODART: M0001, DATFABRIC: 15/10/2010 DATPEREMP: 15/10/2015 NUMLOT: 31 QTE: 100
CODART: M0001, DATFABRIC: 20/10/2010 DATPEREMP: 20/10/2015 NUMLOT: 32 QTE: 200
je voudrais que ma requête me ramène les données du NUMLOT qui a la date de péremption la plus proche et dont la quantité restante en stock est différente de zéro c'est à dire dans mon cas le NUMLOT 31 ainsi de suite vu que le NUMLOT 30 à une QTE=0
voici ma requête qui ne fonctionne pas comme je veux et qui me ramène les données du NUMLOT 30:
PS: je gère toutes les mouvements de stock dans la même table (FAIRE) les type de mouvement sont dans la tables (TYPE_MOUVEMENT)
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 SELECT f.NUMLOT,f.DATFABRIC,f.DATPEREMP, CASE WHEN((SUM(CASE WHEN tm.LIBTYPMVT LIKE 'entr% %2%' THEN f.QTEMVT ELSE 0 END)- SUM(CASE WHEN tm.LIBTYPMVT LIKE 'sorti% %[^fic2]2%' or tm.LIBTYPMVT like '%ansfert2' or tm.LIBTYPMVT like 'transfertinterne2' THEN f.QTEMVT ELSE 0 END)))<>0 THEN (SUM(CASE WHEN tm.LIBTYPMVT LIKE 'entr% %2%' THEN f.QTEMVT ELSE 0 END)- SUM(CASE WHEN tm.LIBTYPMVT LIKE 'sorti% %[^fic2]2%' or tm.LIBTYPMVT like '%ansfert2' or tm.LIBTYPMVT like 'transfertinterne2' THEN f.QTEMVT ELSE 0 END)) ELSE 0 END FROM FAIRE f INNER JOIN mouvement m ON f.CODMVT = m.CODMVT INNER JOIN TYPE_MOUVEMENT tm ON tm.CODTYPMVT = m.CODTYPMVT INNER JOIN SOUS_SITE ss ON ss.CODSOUSIT = m.CODSOUSIT INNER JOIN SITE s ON s.CODSITE = ss.CODSITE INNER JOIN ARTICLE a ON f.CODART = a.CODART INNER JOIN DESTINATION d ON m.CODDEST = d.CODDEST INNER JOIN EMPLOYER e ON m.MATEMP=e.MATEMP WHERE a.codart='M0001' and f.datperemp=(select min(f.datperemp) from faire f INNER JOIN mouvement m ON f.CODMVT = m.CODMVT INNER JOIN TYPE_MOUVEMENT tm ON tm.CODTYPMVT = m.CODTYPMVT INNER JOIN SOUS_SITE ss ON ss.CODSOUSIT = m.CODSOUSIT INNER JOIN SITE s ON s.CODSITE = ss.CODSITE INNER JOIN ARTICLE a ON f.CODART = a.CODART INNER JOIN DESTINATION d ON m.CODDEST = d.CODDEST INNER JOIN EMPLOYER e ON m.MATEMP=e.MATEMP WHERE s.CODSITE= 'PharmaF2')
toutes les jointure que j'ai fait sont indispensable.
aidez moi s'ils vous plait
Partager