Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 18h00   #1
Futur Membre du Club
 
Inscription : mai 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 71
Points : 15
Points : 15
Par défaut Afficher résultat en colonne -> en ligne

Bonjour à tous,

voilà je vous explique mon souhait.

J'ai une table vente dans laquelle se trouve notamment une référence produit une date et une quantité.

Je souhaite concaténer les ventes par année et pouvoir afficher mon résultat sous forme :

refProd | VteN-3 | VteN-2 | VteN-1

Pour le moment j'arrive à afficher mon résultat sous forme de colonne :

refProd | Annee | Total

Mais pas sous forme de ligne.

Je pense pourtant ne pas être loin du but via cette requête :

Code :
1
2
3
4
5
6
7
8
 
SELECT refProd,
CASE WHEN annee= year(getdate())- 3 THEN SUM(isnull(quant, 0)) ELSE 0 END AS [VteN-3], 
CASE WHEN annee= year(getdate())- 2 THEN SUM(isnull(quant, 0)) ELSE 0 END AS [VteN-2], 
CASE WHEN annee= year(getdate())- 1 THEN SUM(isnull(quant, 0)) ELSE 0 END AS [VteN-1]
FROM  ventes
WHERE annee BETWEEN year(getdate())- 3 AND year(getdate())- 1 
GROUP BY refProd,annee
Cette requête me donne le résultat suivant pour le produit 1 par exemple (refProd | VteN-3 | VteN-2 | VteN-1) :

1 - 0 - 0 - 582
1 - 0 - 125 - 0
1 - 254 - 0 - 0

Alors que j'aurais aimé avoir un résultat directement sous cette forme (sans avoir à faire un "SUM" ensuite) : 1 - 254 - 125 - 582

Est ce que l'un de vous aurait une idée ?

Par avance merci de votre aide
Sanceray3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 18h16   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Effectivement, vous n'étiez pas très loin, il faut faire le CASE dans l'opérateur d'agrégat :
Code :
1
2
3
4
5
6
7
8
  SELECT refProd,
         SUM(CASE annee WHEN year(getdate())- 3 THEN quant END) AS [VteN-3], 
         SUM(CASE annee WHEN year(getdate())- 2 THEN quant END) AS [VteN-2], 
         SUM(CASE annee WHEN year(getdate())- 1 THEN quant END) AS [VteN-1]
    FROM ventes
   WHERE annee BETWEEN year(getdate()) - 3
                   AND year(getdate()) - 1 
GROUP BY refProd
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2011, 20h55   #3
Futur Membre du Club
 
Inscription : mai 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 71
Points : 15
Points : 15
Grand merci Waldar pour votre aide ! ;o)
Sanceray3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h41.


 
 
 
 
Partenaires

Hébergement Web