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

Access Discussion :

[SQL]Somme pour chaque colonne de requete analyse [À faire]


Sujet :

Access

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [SQL]Somme pour chaque colonne de requete analyse croisée
    Bonsoir! Je suis dans le meme problème que vous "Ericain" auparavan! Sachant que le votre est résolu, j'ai cherché à comprendre, mais je ne comprend pas votre source SQL car, je voudrai m'en servir pour résoudre mon problème! pouvez vous m'aider?


    Lien d'origine : http://www.developpez.net/forums/vie...=549545#549545



    Edit : Remis en forme par tofalu

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Alors imaginons une table commande avec comme champs :

    Ref : la reference du produit
    Quantite : la quantite commandée
    Mois : le mois de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Ref	quantite	mois
    A1	5         Juin
    A2	10		  Mai
    A2	3		   Juin
    A4	4		   Aout
    A4	4		   Juin
    A1	3		   Mai
    A1	3		   Mai
    On désire avoir la somme des produit commandé par mois et par reference ainsi que la somme total des quantité pour ce produit.

    Le résultat attendu est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Ref	Total	 Aout	 Juin	 Mai
    A1	11      0         5        6
    A2	13      0         3        10
    A4	8       4         4        0
    Ce résultat est obtenu par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TRANSFORM Nz(Sum(Commande.quantite),"0") AS SommeDequantite
    SELECT Commande.Ref, Nz(Sum(Commande.quantite),"0") AS Total
    FROM Commande
    GROUP BY Commande.Ref
    PIVOT Commande.mois;
    Si l'on souhaire avoir au contraire la somme des qantités de produits commandés, on peut retourner le tableau c'est à dire faire figurer les produits en colonne et les mois en lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mois  Total de quantite A1      A2      A4
    Aout  4                 0       0       4
    Juin  12                5       3       4
    Mai1  6                 6       10      0
    Ce résultat est obtenu par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TRANSFORM Nz(Sum(Commande.quantite),"0") AS SommeDequantite
    SELECT Commande.mois, Nz(Sum(Commande.quantite),"0") AS [Total de quantite]
    FROM Commande
    GROUP BY Commande.mois
    PIVOT Commande.Ref;
    Une autre solution possible, on souhaite obtenir les sommes en colonnes et en ligne. Pour obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Ref     Total de Total  Aout    Juin    Mai
    A1      8               0       5       3
    A2      13              0       3       10
    A4      8               4       4       0
    TOTAL   32              4       12      16
    Dans ce cas, il nous faut passer par une requête temporaire nommée RTotal qui va nous calculer les sommes des colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Commande.Ref, Mois, Commande.quantite AS Total,0 as Ordre
    FROM Commande
    UNION (
    SELECT "TOTAL", Mois, sum(Quantite),1 as Ordre FROM Commande GROUP BY Mois,"TOTAL",1);
    Explications :

    On utilise une requete Union pour rassembler les lignes de la table commande ainsi que les lignes Total.
    TOTAL sert à considerer le total comme une référence d'un produit. Ordre va nous servir à afficher la ligne total en bas de la liste. Cette requête affiche donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Ref     Mois    Total   Ordre
    A1      Juin    5       0
    A1      Mai     3       0
    A2      Juin    3       0
    A2      Mai     10      0
    A4      Aout    4       0
    A4      Juin    4       0
    TOTAL   Aout    4       1
    TOTAL   Juin    12      1
    TOTAL   Mai     16      1
    Ensuite notre requête d'analyse croisée devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRANSFORM Nz(Sum(Rtotal.Total),"0") AS SommeDeTotal
    SELECT Rtotal.Ref, Nz(Sum(Rtotal.Total),"0") AS [Total de Total]
    FROM Rtotal
    GROUP BY Rtotal.Ref, ordre
    ORDER BY Ordre
    PIVOT Rtotal.Mois;
    On tri bien par ordre pour afficher le resultat en bas. Notons que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORDER BY Ordre DESC
    Nous afficherait la ligne total en haut

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour tout car ceci répond entièrement à mes attentes!
    Je mespresse d'appliquer ce que vous venez de m'apprendre!

    Encore merci

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

Discussions similaires

  1. [MySQL] Calculer une somme pour chaque ligne et colonne d'un tableau
    Par baggie dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/05/2010, 09h55
  2. Somme de chaque colonne avec sauvegarde
    Par delphino7 dans le forum Bases de données
    Réponses: 7
    Dernier message: 23/04/2008, 19h55
  3. Réponses: 5
    Dernier message: 16/02/2007, 16h03
  4. [SQL] Somme de 2 colonnes dans une même table
    Par Cyrilange dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/04/2005, 08h32
  5. [VB.NET] Taille differente pour chaque colonne dans DATAGRID
    Par stephane93fr dans le forum Windows Forms
    Réponses: 14
    Dernier message: 12/01/2005, 16h50

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