Requête croisée ...

Le
Stéphane Miqueu
Bonjour,
Le retour de week-end est difficile et je sèche sur ce truc

Soit un table avec :
Année, Mois, Vendeur, CA.

ex : 2007, 1, A, 200.00

Je voudrais faire une requête qui me renvoie le cumul du CA par vendeur
avec les années en colonnes :
Vendeur, SUM(CA N-1), SUM(CA N)

Un truc du genre,
CASE Année
WHEN YEAR(GETDATE())-1 THEN SUM(CA)
END AS CA_N_1

Mais j'ai beau le tourner dans tous les sens j'y arrive pô !
Merci de votre pitié

--
Ami Calmant
Stéphane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #11882331
Stéphane Miqueu a écrit :
Bonjour,
Le retour de week-end est difficile et je sèche sur ce truc ...

Soit un table avec :
Année, Mois, Vendeur, CA.

ex : 2007, 1, A, 200.00

Je voudrais faire une requête qui me renvoie le cumul du CA par vendeur
avec les années en colonnes :
Vendeur, SUM(CA N-1), SUM(CA N)

Un truc du genre,
CASE Année
WHEN YEAR(GETDATE())-1 THEN SUM(CA)
END AS CA_N_1

Mais j'ai beau le tourner dans tous les sens j'y arrive pô !
Merci de votre pitié





il faut utiliser le pivot disponible avec la v2005, sinon recourir à des
cases autant de fois que d'années.

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
zoltix
Le #11882291
On 3 mar, 21:19, Fred BROUARD
Stéphane Miqueu a écrit :



> Bonjour,
> Le retour de week-end est difficile et je sèche sur ce truc ...

> Soit un table avec :
> Année, Mois, Vendeur, CA.

> ex : 2007, 1, A, 200.00

> Je voudrais faire une requête qui me renvoie le cumul du CA par vendeu r
> avec les années en colonnes :
> Vendeur, SUM(CA N-1), SUM(CA N)

> Un truc du genre,
> CASE Année
> WHEN YEAR(GETDATE())-1 THEN SUM(CA)
> END AS CA_N_1

> Mais j'ai beau le tourner dans tous les sens j'y arrive pô !
> Merci de votre pitié

il faut utiliser le pivot disponible avec la v2005, sinon recourir à des
cases autant de fois que d'années.

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
***********************http://www.sqlspot.com*************************


J'ai fait un truc similaire sans pivot table............ Mais je
savais que je devais travailler sur 3 ans .......avec sous-select

select X.produit
, (select sum(Y.Prise) from Y where X.= id Y.id and yr
='2005') as 2005
, (select sum(Y.Prise) from Y where X.= id Y.id and yr
='2006) as 2006
, (select sum(Y.Prise) from Y where X.= id Y.id and yr
='2007) as 2007
from X
where X.id ='?????'
Stéphane Miqueu
Le #11882281
Stéphane Miqueu a exprimé avec précision :
Bonjour,
Le retour de week-end est difficile et je sèche sur ce truc ...

Soit un table avec :
Année, Mois, Vendeur, CA.

ex : 2007, 1, A, 200.00

Je voudrais faire une requête qui me renvoie le cumul du CA par vendeur avec
les années en colonnes :
Vendeur, SUM(CA N-1), SUM(CA N)

Un truc du genre,
CASE Année
WHEN YEAR(GETDATE())-1 THEN SUM(CA)
END AS CA_N_1

Mais j'ai beau le tourner dans tous les sens j'y arrive pô !
Merci de votre pitié



Aujourd'hui c'est mardi, j'ai les yeux au bon endroit et mon neurone
s'est reconnecté donc j'ai trouvé :

SELECT Vendeur
, SUM(
CASE Année
WHEN 2007 THEN CA
ELSE 0
END) AS CA_N_1
, SUM(
CASE Année
WHEN 2008 THEN CA
ELSE 0
END) AS CA
FROM MaTable
GROUP BY Vendeur

Tout simple quoi !

Je vais tester la solution avec les sous-select pour comparer la
rapidité.

--
Ami Calmant
Stéphane
Publicité
Poster une réponse
Anonyme