OVH Cloud OVH Cloud

[SQL] Aux PROs du language

1 réponse
Avatar
Stéphane Miqueu
Bonjour,

Voilà mon souci, soit une table (Pays, Année, CA) pour chaque pays et
pour chaque année j'ai le chiffre d'affaire.

Comment faire une requête qui me donnerait un tableau croisé :
2000 2001 2002 ...
Pays SUM(CA) SUM(CA) SUM(CA) ...

Pour l'instant j'ai fais ça :
SELECT [Pays],
'2003' = CASE [Année] WHEN 2003 THEN SUM([CA]) END,
'2004' = CASE [Année] WHEN 2004 THEN SUM([CA]) END,
'2005' = CASE [Année] WHEN 2005 THEN SUM([CA]) END,
'2006' = CASE [Année] WHEN 2006 THEN SUM([CA]) END,
SUM([CA]) AS 'CA'
FROM [vue_StatVTE]
WHERE ([Année] BETWEEN 2003 AND 2006)
GROUP BY [Pays], [Année]

le cumul sont corrects mais ça me donne une ligne par pays et par année

Merci de votre aide

--
Ami Calmant
Stéphane

1 réponse

Avatar
Stéphane Miqueu
Stéphane Miqueu a émis l'idée suivante :
Bonjour,

Voilà mon souci, soit une table (Pays, Année, CA) pour chaque pays et pour
chaque année j'ai le chiffre d'affaire.

Comment faire une requête qui me donnerait un tableau croisé :
2000 2001 2002 ...
Pays SUM(CA) SUM(CA) SUM(CA) ...

Pour l'instant j'ai fais ça :
SELECT [Pays],
'2003' = CASE [Année] WHEN 2003 THEN SUM([CA]) END,
'2004' = CASE [Année] WHEN 2004 THEN SUM([CA]) END,
'2005' = CASE [Année] WHEN 2005 THEN SUM([CA]) END,
'2006' = CASE [Année] WHEN 2006 THEN SUM([CA]) END,
SUM([CA]) AS 'CA'
FROM [vue_StatVTE]
WHERE ([Année] BETWEEN 2003 AND 2006)
GROUP BY [Pays], [Année]

le cumul sont corrects mais ça me donne une ligne par pays et par année

Merci de votre aide



Je m'auto-réponds je viens de trouver :

SELECT [Pays], SUM(T1), SUM(T2), SUM(T3), SUM(T4), SUM(CA)
FROM (
SELECT [Pays],
T1 = CASE [Année] WHEN 2003 THEN SUM([CA]) END,
T2 = CASE [Année] WHEN 2004 THEN SUM([CA]) END,
T3 = CASE [Année] WHEN 2005 THEN SUM([CA]) END,
T4 = CASE [Année] WHEN 2006 THEN SUM([CA]) END,
SUM([CA]) AS 'CA'
FROM [vue_StatVTE]
WHERE ([Année] BETWEEN 2003 AND 2006)
GROUP BY [Pays], [Année]
) AS T
GROUP BY [Pays]

C'était ce p#@!}# de 'AS T' qui me manquait et je ne comprenais pas le
message d'erreur.

--
Ami Calmant
Stéphane