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 :

Requête tableau sur 12 mois d'une année, comment faire ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut Requête tableau sur 12 mois d'une année, comment faire ?
    Bonjour à tous,

    J'aimerai créer une requête qui renvoie un total par mois sur 12 mois d'une année donnée montrant tous les mois même si certains ne sont pas renseignés ...

    J'ai essayé avec des requêtes union en utilisant la fonction Month mais je n'y arrive pas !

    Faut il vraiment regrouper 12 requêtes distinctes dans une seule ou bien y a t'il moyen de faire une seule requête en SQL ?

    J'y arrive parfaitement avec une analyse croisée mais cela oblige à mettre des entêtes de lignes même quand on en a pas besoin !

    Merci d'avance pour vos réponses

  2. #2
    Membre actif Avatar de Flyoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 157
    Points : 278
    Points
    278
    Par défaut
    Bonjour,

    Quelque chose dans ce gout la fonctionnerait-il?


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(valeur) from table1 group by mois

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut
    Merci pour ta réponse, mais non, ce n'est pas ce que je voulais...

    Je voulais un affichage montrant tous les mois en colonnes, j'y suis arrivé en faisant d'abord une requête d'analyse croisée puis une autre requête reprenant cette dernière mais faisant des sommes par mois. (en supprimant le champs qui donne les entêtes de lignes).

    Cela fonctionne parfaitement mais cela implique de faire 2 requêtes ...

    Je pensais qu'il existerait une fonction projetant chaque mois sous forme de tableau, apparement seule une analyse croisée le fait ...

  4. #4
    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 Clickandgo et Flyoss,

    Je me permets de m'immiscer, Flyoss...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .../... PIVOT Format([Ta_Date],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");
    ==> devrait le faire.

    L'essentiel est de connaître le principe, ensuite tu peux formater ta date comme tu le souhaites. A tester...

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut
    Bonjour Richard,

    Si je ne m'abuse il s'agît d'un extrait de requête croisée, on ne peut pas s'en servir dans une requête conventionnelle ?

  6. #6
    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 Clickandgo,

    Citation Envoyé par Clickandgo
    Si je ne m'abuse il s'agît d'un extrait de requête croisée .../...
    ==> eh bien, non, tu ne t'abuses pas.

    Seule une requête analyse croisée te donnera le résultat que tu souhaites. Et comme
    Citation Envoyé par Clickandgo
    J'y arrive parfaitement avec une analyse croisée .../...
    , je pense qu'il te manquait l'astuce
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    PIVOT Format([Ta_Date],"mmm") In ("janv","févr","mars","avr","mai","juin","juil","août","sept","oct","nov","déc");
    qui satisfait à
    Citation Envoyé par Clickandgo
    J'aimerai créer une requête qui renvoie un total par mois sur 12 mois d'une année donnée montrant tous les mois même si certains ne sont pas renseignés.
    Le mieux est que tu testes tout cela sur ta requête analyse croisée.

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut
    Merci Richard,

    Je parviens facilement à créer ce que je veux en analyse croisée sauf quand il s'agît de mettre un critère pour filtrer une année par exemple.

    J'ai beau mettre aussi en paramètres l'expression filtre contenue dans la colonne du critère, rien n'y fait... Aucun message d'erreur ne s'affiche et aucun résultat de requête non plus.

    Alors, comment s'y prendre ?

  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 Clickandgo,

    Procédons en deux étapes.

    Tu as dit :
    Citation Envoyé par Clickandgo
    J'y arrive parfaitement avec une analyse croisée .../...
    ==> donc, d'après ce que je comprends, tu arrives à obtenir ce que tu souhaites mais avec, uniquement, les mois qui sont renseignés (donc sans les mois non renseignés).

    Donc, peux-tu poster cette requête que tu considères correcte mais ne comportant pas les mois non renseignés ?
    ==> nous la compléterons ensuite.

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut
    Richard 35,

    Merci pour ton intérêt.

    Pour faire simple :

    Je voudrais pouvoir filtrer par année cette analyse croisée et aussi changer grâce à un autre combobox le champ qui donne les entêtes de lignes à la volée (chose que l'on peut faire manuellement dans la requête) mais en VBA après sélection de valeur ...

    Comme dit plus haut, je n'arrive pas à ce que le critère de filtrage concernant l'année marche (là cela mélange toutes les années vu qu'aucune n'est spécifiée...

    Voici un exemple d'un SQL qui marche bien mais auquel il manque de pouvoir trier par année.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum(CCur([Total])) AS [Total Mois]
    SELECT [Postes de Dépenses].Libellé
    FROM [Registre Dépenses] INNER JOIN [Postes de Dépenses] ON [Registre Dépenses].PosteDeDepense = [Postes de Dépenses].Code
    GROUP BY [Postes de Dépenses].Libellé
    ORDER BY [Postes de Dépenses].Libellé DESC 
    PIVOT Format([DateDepense],"mmm") In ("Janv","Févr","Mars","Avr","Mai","Juin","Juil","Août","Sept","Oct","Nov","Déc");
    J'arrive à filtrer par année (voir sql ci dessous sur même principe) en ajoutant manuellement une année dans une colonne [année], mais impossible de faire fonctionner une sélection depuis un combo incrusté dans un formulaire, même en déclarant ce critère en tant que paramètre..., que fais-je mal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TRANSFORM Sum(CCur([Total])) AS [Total Mois]
    SELECT Fournisseurs.Fournisseur
    FROM Fournisseurs INNER JOIN ([Registre Dépenses] INNER JOIN [Postes de Dépenses] ON [Registre Dépenses].PosteDeDepense = [Postes de Dépenses].Code) ON Fournisseurs.IdFournisseur = [Registre Dépenses].Fournisseur
    WHERE (((Year([datedepense]))=2010))
    GROUP BY Fournisseurs.Fournisseur, Year([datedepense])
    ORDER BY Fournisseurs.Fournisseur DESC 
    PIVOT Format([DateDepense],"mmm") In ("Janv","Févr","Mars","Avr","Mai","Juin","Juil","Août","Sept","Oct","Nov","Déc");

  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
    Bonjour Clickandgo,

    Je te suggère de passer par une requête intermédiaire, R1, qui filtre en fonction de ce que tu souhaites, et de baser ta requête analyse croisée sur R1.

    Je ne connais pas VBA et peu le traitement des combobox, je ne pourrai donc t'aider sur cette partie.

    L'intéressant du sujet, c'est l'utilisation particulière de PIVOT pour forcer la valeur des colonnes, ensuite, nous sommes dans la programmation "normale".

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 113
    Points : 272
    Points
    272
    Par défaut
    Je vais suivre ta recommandation, merci beaucoup !

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

Discussions similaires

  1. Requête : Auto complétion des mois d'une année
    Par clickandgo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/06/2011, 11h57
  2. Réponses: 1
    Dernier message: 12/08/2010, 15h01
  3. Réponses: 2
    Dernier message: 30/08/2007, 23h03
  4. Réponses: 1
    Dernier message: 18/08/2006, 16h20
  5. Réponses: 3
    Dernier message: 11/01/2006, 18h35

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