Bonjour à tous,
J'ai besoin de créer une vue représentant des quantités mensuelles par produit, pour les 12 prochains mois (mois en cours inclus).
Pour cela, je dispose d'une table consituée de la manière suivante:
Où PSM01 à PSM12 contiennentt les quantités de Janvier à Décembre.tblCalcPrevStockMensuelles
RefProduit
Année
PSM01
PSM02
PSM03
PSM04
PSM05
...
PSM12
Je dispose dans une autre table contenant qu'un seul enregistrement de l'année et le mois à considérer comme le premier mois.
J'ai créé la vue correspondant à ce besoin mais j'aimerais trouver une solution plus élégante et plus rapide.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 SELECT tcPSM.RefProduit (CASE tIG.MOIS WHEN 1 THEN tcPSM.PSM01 WHEN 2 THEN tcPSM.PSM02 WHEN 3 THEN tcPSM.PSM03 WHEN 4 THEN tcPSM.PSM04 WHEN 5 THEN tcPSM.PSM05 WHEN 6 THEN tcPSM.PSM06 WHEN 7 THEN tcPSM.PSM07 WHEN 8 THEN tcPSM.PSM08 WHEN 9 THEN tcPSM.PSM09 WHEN 10 THEN tcPSM.PSM10 WHEN 11 THEN tcPSM.PSM11 WHEN 12 THEN tcPSM.PSM12 End ) as PSMG1, (CASE tIG.MOIS WHEN 1 THEN tcPSM.PSM02 ... WHEN 11 THEN tcPSM.PSM12 WHEN 12 THEN tcPSM_ASuiv.PSM01 End ) as PSMG2, (CASE tIG.MOIS WHEN 1 THEN tcPSM.PSM03 ... WHEN 9 THEN tcPSM.PSM11 WHEN 10 THEN tcPSM.PSM12 WHEN 11 THEN tcPSM_ASuiv.PSM01 WHEN 12 THEN tcPSM_ASuiv.PSM02 End ) as PSMG3, .... (CASE tIG.MOIS WHEN 1 THEN tcPSM.PSM12 WHEN 2 THEN tcPSM_ASuiv.PSM01 WHEN 3 THEN tcPSM_ASuiv.PSM02 ... WHEN 11 THEN tcPSM_ASuiv.PSM10 WHEN 12 THEN tcPSM_ASuiv.PSM11 End ) as PSMG12 FROM tblCalcPrevStockMensuelles AS tcPSM INNER JOIN tblInfosGénérales tIG ON tcPSM.Année = tIG.Année INNER JOIN tblCalcPrevStockMensuelles AS tcPSM_ASuiv ON tcPSM.RefProduit = tcPSM_ASuiv.RefProduit AND tcPSM.Canal = tcPSM_ASuiv.Canal AND CAST(tcPSM.Année AS int) + 1 = CAST(tcPSM_ASuiv.Année AS Int)
A part, une table temporaire - ce qui me plait encore moins - je ne vois pas d'autres solutions.
Partager