Bonjour
Voici mon défi :
J'ai une table qui recense tous les items de mon stock et une autre qui mémorise toutes les transactions faites sur chaque item (pour faire simple, 2 mouvements : entrée ou sortie).
Je souhaite écrire une requête qui me ressorte l'évolution du stock en indiquant jour par jour, mouvement par mouvement (auquel on associe une quantité), le solde à la fin de chaque ligne.
Voici la requête actuelle :
où
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 select b.catno,convert(varchar,t.transaction_dt,103) as date, case t.transaction_type when 'CloseReception' then 'E' when 'Consume' then 'S' else t.transaction_type end as mouvement, count(it.inventoryid) as quantite from transactions t join inventory_transactions it on it.transaction_id = t.transaction_id join inventory_batch ib on ib.inventoryid = it.inventoryid join batch_info b on b.batchid=ib.batchid where t.transaction_type <> 'AddReception' and b.catno='GOSSTR95-23' group by b.catno, convert(varchar,t.transaction_dt,103),t.transaction_type
- TRANSACTIONS est la table des mouvements
- INVENTORY_TRANSACTIONS est le mouvement de chaque item
- INVENTORY_BATCH relie un item à un lot
- BATCH_INFO est le lot
NB : les 2 dernières tables permettent de faire la sélection par rapport à une référence fournisseur, ici : GOSSTR95-23.
NB2 : on enlève les transactions de AddReception qui font doublon avec 'CloseReception'
Cela donne :
Il me manque juste une colonne supplémentaire qui indique le solde au fur età mesure, tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 catno date mouvement quantite GOSSTR95-23 09/07/2009 E 8 GOSSTR95-23 16/07/2009 E 2 GOSSTR95-23 17/07/2009 S 1
J'ai essayé avec les fonction SUM et COUNT cumulées mais cela ne marche pas et surtout je ne sais pas comment réaliser un cumul en récupérant la valeur du solde précédent ! La difficulté est que la quantité est déjà un champ calculé (COUNT des items) et qu'il faut distinguer les entrées et les sorties !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 catno date mouvement quantite solde GOSSTR95-23 09/07/2009 E 8 8 GOSSTR95-23 16/07/2009 E 2 10 GOSSTR95-23 17/07/2009 S 1 9
Mes différentes recherches sur ce forum ne m'ont pas apportées de solution non plus, cela ressemble pourtant à un "cas d'école" ? Il doit donc y avoir une réponse simple.
Merci d'avance pour votre aide !
Adrien
PS : SGBD = SQL Server 2005
Partager