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

MS SQL Server Discussion :

Personnaliser le titre de ma colonne avec une fonction


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut Personnaliser le titre de ma colonne avec une fonction
    Bonjour,

    je dois faire une requête affichant sur les douze mois précédant, d'une date saisie par l'utilisateur, les quantités vendues.

    La requête fonctionne très bien, seulement pour donner un côté plus pro j'aimerais que pour chaque colonne le nom du mois apparaisse.

    Exemple :
    @MaDate est une date personnalisée par l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (select isnull(sum(L2.gl_qtefact),0) from ligne L2 where L2.gl_article=ligne.gl_article and L2.gl_naturepieceg="BLC" and (gl_datepiece>=dateadd(day,-day(dateadd(month,-1,@MaDate))+1,dateadd(month,-1,@MaDate))) 
    and L2.gl_datepiece<=dateadd(day,31,dateadd(month,-1,@MaDate)) )
    -> le calcul que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATENAME(month, dateadd(month,-1,@MaDate))
    -> le nom du mois que j'aimerais voir apparaitre dans le nom de ma colonne.

    Or si je fais un AS DATENAME(ETC..) ça ne marche pas !

    Voilà j’espère avoir était clair.

    Merci pour votre aide ou remarque

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Vous pouvez faire une série de CASE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    SELECT 
        ISNULL(
            SUM(
                CASE WHEN MONTH(gl_datepiece) 1 THEN L2.gl_qtefact END
            )
            ,0
        ) AS Janvier
        ,
        ISNULL(
            SUM(
                CASE WHEN MONTH(gl_datepiece) 2 THEN L2.gl_qtefact END
            )
            ,0
        ) AS Fevrier
        ,
        ISNULL(
            SUM(
                CASE WHEN MONTH(gl_datepiece) 3 THEN L2.gl_qtefact END
            )
            ,0
        ) AS Mars
        ,
    ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut
    oui c'est intéressant,

    Mais dans ma requête j'ai besoin des 12 mois antérieur à la date saisie par l'utilisateur donc 12 colonnes, du coup ça va pas mal alourdir ma requête !

    Sinon je peux toujours essayer le PIVOT mais je vais devoir me reformer à fond

    Merci

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par bitou11 Voir le message
    oui c'est intéressant,

    Mais dans ma requête j'ai besoin des 12 mois antérieur à la date saisie par l'utilisateur donc 12 colonnes, du coup ça va pas mal alourdir ma requête !
    Je ne comprend pas, vous ne vouliez pas douze colonnes ?
    Mais en effet, personnellement, je renverrais une ligne par mois avec le numéro de mois, plutôt qu'une colonne par mois, et je traiterai ensuite coté client...
    Citation Envoyé par bitou11 Voir le message
    Sinon je peux toujours essayer le PIVOT mais je vais devoir me reformer à fond
    Merci
    oui, en fait la requête que je vous ai donnée est un pivot "à l'ancienne", car vous n'avez pas indiqué votre version de SQL server, je ne sais donc pas si PIVOT est disponible

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut
    Oui tout à fait je veux 12 colonnes, mais si ma date saisie est le 15/03/2013
    la première colonne devra s'appeler février
    si la date est : 16/06/2013 alors la première colonne sera Mai

    etc ..
    un case risque d'alourdir ma requête, ou alors j'ai mal compris votre réponse.

    Je pense en effet traiter ça côté client.
    La personne veut un rendu sur Excel, ça me laisse la possibilité d'utiliser VBA !

    Merci encore pour votre aide

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Bonjour, tu es dans une position où les limites de SQL sont proches. C'est pas impossible mais ça risque d'être difficile à lire, probablement pas très performant et certainement peu flexible face aux changements.

    C'est un scénario plus adapté à Analysis Services. As-tu accès à une licence entreprise de SQL Server? Si c'est le cas, SSIS et SSAS sont probablement disponibles.

    De plus, Excel se branche facilement sur une source Analysis Service et permet de faire des graphiques pivots en quelques minutes.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2004
    Messages : 52
    Par défaut
    Merci beaucoup, je ne connaissait pas.

    Heureusement j'ai trouvé un détournement facile avec Excel, c'est juste pour un utilisateur donc ça ira bien.

    Mais SSIS et SSAS me paraissent très intéressant ! Nous avons effectivement une licence SQL SERVER PRO.

    Je vais m'y pencher.

    Merci beaucoup

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

Discussions similaires

  1. SELECT colonne avec une condition
    Par citronbleu-v dans le forum Requêtes
    Réponses: 0
    Dernier message: 02/05/2008, 16h11
  2. [Visual Web] Afficher une colonne avec une image
    Par david71 dans le forum NetBeans
    Réponses: 1
    Dernier message: 05/12/2007, 16h20
  3. [DataGridViewButtonColumn] Bouton dans une colonne avec une image
    Par aurelien.tournier dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/11/2007, 11h35
  4. Selection de plusieurs colonnes avec une zone de liste
    Par vinzeffect dans le forum Access
    Réponses: 3
    Dernier message: 20/01/2007, 22h51
  5. #Erreur dans une requête avec une fonction personnalisée
    Par pguiheu dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 04/07/2006, 15h45

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