Re,
Bon déjà mauvaise nouvelle pour moi, nous sommes en SQL server 2000 (
soit disant la version préconisée pour SAGE version SQL). L'opérateur PIVOT avait l'air nickel mais ca ne marche pas.
Donc je me suis rabattu sur l'utilisation du 'CASE WHEN'
Mais j'ai un souci que je n'arrive pas à résoudre avec cette méthode : j'ai autant de ligne que de résultats pour une référence.
Si je reprends l'exemple du dessus cela me donne :
REFA 2 0 0
REFA 0 0 6
REFB 0 5 0
REFB 0 0 1
alors que je voudrais
REFA 2 0 6
REFB 0 5 1
Je vous soumets rapidement ma requête en tenant compte que :
- la table F_ARTICLE me sert pour définir des critères de sélections
- la table F_GAMSTOCK contient les infos sur les qtés d'article pour chaque taille
- la table F_ARTGAMME contient l'intitulé de la taille
Code :
SELECT dbo.F_GAMSTOCK.AR_Ref ,
CASE WHEN dbo.F_ARTGAMME.EG_Enumere = 36 THEN SUM(dbo.F_GAMSTOCK.GS_QteSto) END AS [36],
CASE WHEN dbo.F_ARTGAMME.EG_Enumere = 38 THEN SUM(dbo.F_GAMSTOCK.GS_QteSto) END AS [38],
CASE WHEN dbo.F_ARTGAMME.EG_Enumere = 40 THEN SUM(dbo.F_GAMSTOCK.GS_QteSto) END AS [40]
FROM dbo.F_GAMSTOCK INNER JOIN
dbo.F_ARTICLE ON dbo.F_GAMSTOCK.AR_Ref = dbo.F_ARTICLE.AR_Ref INNER JOIN
dbo.F_ARTGAMME ON dbo.F_GAMSTOCK.AG_No1 = dbo.F_ARTGAMME.AG_No
WHERE (dbo.F_ARTICLE.AR_Gamme1 = 3) AND (dbo.F_GAMSTOCK.GS_QteSto > 0) AND (dbo.F_ARTICLE.AR_Stat03 = '1L')
GROUP BY dbo.F_GAMSTOCK.AR_Ref, dbo.F_ARTGAMME.EG_Enumere
un grand merki