IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Afficher résultat en colonne -> en ligne


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 72
    Points : 45
    Points
    45
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Effectivement, vous n'étiez pas très loin, il faut faire le CASE dans l'opérateur d'agrégat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 72
    Points : 45
    Points
    45
    Par défaut
    Grand merci Waldar pour votre aide ! ;o)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Calcul résultat de 2 colonne pour chaque ligne dans une table
    Par magicien33 dans le forum WinDev
    Réponses: 5
    Dernier message: 09/09/2013, 11h28
  2. Réponses: 4
    Dernier message: 22/09/2011, 15h25
  3. Réponses: 7
    Dernier message: 29/06/2011, 14h45
  4. Passage lignes résultats en colonne
    Par mr_keyser dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/03/2009, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo