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 :

Sélection conditionnelle de champs


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Sélection conditionnelle de champs
    Bonjour,
    Je me permets de vous soumettre une petite question à la quelle je n'arrive pas à trouver de réponse:

    Une table de suivi des ventes mensuelles a comme champs :
    CONSO.NART (articles) , CONSO.COQT01 (ventes janvier N-1), CONSO.COQT02(ventes février N-1), CONSO.COQT03...., CONSO.COQT12, CONSO.COQT13 (ventes janvier N),...CONSO.COQT24 (ventes décembre N).
    J'aurais besoin pour chaque article CONSO.NART de faire la somme des ventes des 3 derniers mois échus (au mois de Mars N CONSO.COQT12 + CONSO.COQT13+ CONSO.COQT14... et je ne trouve aucune issue pour automatiser cette sélection de mois en fonction de month(now())...

    Il y a-t-il seulement une solution à ce problème?
    NB: je travaille sous msquery excel

    Merci à vous et bonne journée.
    Matthieu

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Ton problème met bien en évidence le défaut de modélisation de la table CONSO.
    Avec une table de la forme : (NART, MOIS, COQT), cette requête se préparerait très simplement...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    bonjour al1_24,

    oh que oui, ce serait bien plus simple, mais je n'ai à ce jour aucun levier pour que cela change (toutes les routines de réapprovisionnements automatiques et de gestion des stocks de la boite tournent là dessus...)

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    il faut créer la requête sql dynamiquement.

    Ensuite la soumettre, pas d'autre choix.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Tu as toujours la possibilité d'interroger une vue qui normalise la forme de ta table :
    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
    SELECT  nart
        ,   1       AS  mois
        ,   coqt01  AS  coqt
    FROM    conso
    UNION ALL
    SELECT  nart
        ,   2       AS  mois
        ,   coqt02  AS  coqt
    FROM    conso
    UNION ALL
    ...
    UNION ALL
    SELECT  nart
        ,   24      AS  mois
        ,   coqt24  AS  coqt
    FROM    conso
    ;

  6. #6
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci à vous pour les idées proposées,
    je mets le problème en "résolu" et continue à travailler sur ces bases.

  7. #7
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il reste la solution du CASE WHEN, mais je reconnais qu'elle manque d'élégance


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
        CASE MONTH(NOW())
            WHEN 1 THEN coqt10 + coqt11 + coqt12
            WHEN 2 THEN coqt11 + coqt12 + coqt13
            WHEN 3 THEN coqt12 + coqt13 + coqt14
            ...
        END AS TroisDernierMois
    FROM ...

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Qu'importe l'élégance tant que c'est efficace

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

Discussions similaires

  1. Sélection conditionnelle de plusieurs champs
    Par Tevsox dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/07/2012, 15h52
  2. Sélection conditionnelle d'un champ
    Par DexterV dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/04/2012, 20h40
  3. Sélection dynamique de champs
    Par nirousse dans le forum Outils
    Réponses: 3
    Dernier message: 02/05/2006, 19h24
  4. Réponses: 9
    Dernier message: 17/10/2005, 17h13
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

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