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

Requêtes et SQL. Discussion :

Forcer les entêtes d'une requête croisée ? [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut Forcer les entêtes d'une requête croisée ?
    Bonjour à tous, merci de votre aide et de votre temps.

    Je sais qu'on peut dire quelles entêtes de colonnes on veut pour une requête croisée dynamique mais je suis incapable de retrouver comment. Par exemple pour toujours avoir les 12 mois de l'année même s'il n'y a pas de données pour un des mois.

    Quelqu'un sait-il ?

    A+

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Marot_r,

    Hum... je ne crois pas que l'on puisse obtenir une colonne sans qu'au moins un enregistrement traité ne possède cette donnée. Mais, je suis intéressé.

    Sinon, concernant ton exemple, tu pourrais créer une petite table des mois (sous la forme de ta table à analyser), la joindre à ta table à analyser (avec une flèche à droite mais, cela, tu le sais).

    Ensuite, l'analyse croisée pourrait s'effectuer à partir de cette requête (dont les mois "orphelins de données" apparaîtront).

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 796
    Points : 58 209
    Points
    58 209
    Billets dans le blog
    42
    Par défaut
    salut,

    Citation Envoyé par marot_r Voir le message
    Par exemple pour toujours avoir les 12 mois de l'année même s'il n'y a pas de données pour un des mois.
    avec une table des Mois(NumMois, CodeMois, NomMois) puis une jointure externe sur la table principale.
    Mois----->TblePrincipale

    [Edit] Ah, embouteillage ! [/EDIT]

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Merci pour l'idée de la table mais je me souviens que je l'ai déjà fait.

    Je n'arrive juste pas à me souvenir comment.

    A+

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Salut,

    Il faut mettre 1 in sur le pivot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    PIVOT Month([LaDate]) In(1,2,3,4,5,6,7,8,9,10,11,12)
    Ou agir sur la propriété "en-tête des colonnes" du champ "En-tête de colonne" en mode création de ta requête. en y mettant 1;2;3;4;5;6;7;8;9;10;11;12 par exemple

    A+

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 796
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 796
    Points : 58 209
    Points
    58 209
    Billets dans le blog
    42
    Par défaut
    je note l'astuce dans mon cahier, merci User

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Merci User je savais bien que c'était possible :-).

    A+

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous,

    Et merci, User, pour cette astuce très intéressante et élégante.

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 411
    Points : 19 988
    Points
    19 988
    Billets dans le blog
    66
    Par défaut
    Bonjour à tous,

    Content d'apprendre de petites choses à des experts comme vous

    Il faut dire que j'en abuse dans mes plannings jusqu'à l'overdose

  10. #10
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    En voulant tester l'astuce, je m'aperçois que l'assistant "requête analyse croisée" prévoie ce cas : quand l'entête colonne est de type "Date", il propose, ce qu'il nomme un "intervalle", et qui peut être Année, Trimestre, Mois, Date ou Date/Heure.

    Le "In" dans "PIVOT" veut, peut-être, dire "intervalle" et non "dans"... mais bon, peu importe.

    J'apprécie l'intelligence de l'assistant.

    Ceci, sans vouloir minimiser l'intervention brillante de User, bien entendu.

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

Discussions similaires

  1. [AC-2007] Sélectionner les résultats d'une requête analyse croisée par mois
    Par cslbcg dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 03/12/2009, 16h21
  2. Condition dans une requête croisée
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2005, 10h31
  3. Réponses: 4
    Dernier message: 05/10/2005, 16h07
  4. Réponses: 2
    Dernier message: 05/10/2005, 15h27
  5. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 18h18

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