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 :

AMELIORER avec “Réaliser des totaux en ligne et en colonne” [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 125
    Points
    125
    Par défaut AMELIORER avec “Réaliser des totaux en ligne et en colonne”
    Bonjour a tous,
    Je viens d’ecrire deux requetes qui permettent d’obtenir des TOTAUX par ligne et par colonnes d’une table.
    Etatpe1: obtenir les TOTAUX par ligne. (Requete Temp_Sum_1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Commande.SalesPerson
    , Commande.fn1
    , Commande.fn2
    , Commande.fn3
    , [fn1]+[fn2]+[fn3] AS TotalPerRow
    FROM Commande;
    Etatpe 2 : Obtenir les TOTAUX par colonne. (Requete: Temp_Sum_2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT IsNull([SalesPerson]) AS TotalPerColumn
    , Sum(Temp_Sum_1.fn1) AS SumOffn1
    , Sum(Temp_Sum_1.fn2) AS SumOffn2
    , Sum(Temp_Sum_1.fn3) AS SumOffn3
    , Sum(Temp_Sum_1.TotalPerRow) AS SumOfTotalPerRow
    FROM Temp_Sum_1
    GROUP BY IsNull([SalesPerson]);
    Etatpe 3: Unir le deux requetes (Requete: Temp_Sum_3_SumPerColumn_SumPerRow)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  Temp_Sum_1.*
    From Temp_Sum_1
    UNION ALL 
    SELECT   "TotalPerColumn"
    ,Temp_Sum_2.SumOffn1
    ,Temp_Sum_2.SumOffn2
    ,Temp_Sum_2.SumOffn3	
    ,Temp_Sum_2.SumOfTotalPerRow
    From Temp_Sum_2;

    La table initiale est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Commande
    SalesPerson	fn1	fn2	fn3
    a	1	1	1
    b	2	2	2
    c	3	3	3
    Le result final obtenu est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Temp_Sum_3_SumPerColumn_SumPerRow
    SalesPerson	fn1	fn2	fn3	TotalPerRow
    a	1	1	1	3
    b	2	2	2	6
    c	3	3	3	9
    TotalPerColumn	6	6	6	18
    Ma question est la suivante: existe-t-il une meilleure facon d’obtenir le meme resultat?
    Merci d’avance de me repondre.
    Cordialement.
    Bonero.

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Bonero,

    c'est bien la méthodologie.
    en simplifié:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SalesPerson, fn1, fn2, fn3, fn1+fn2+fn3 AS TotalPerRow
    FROM Commande
    UNION
    SELECT "TotalPerColumn", Sum(fn1) AS S1, Sum(fn2) AS S2, Sum(fn3) AS S3, S1+S2+S3 AS TOTAL
    FROM Commande;

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 125
    Points
    125
    Par défaut
    grand merci pour ta reponse;
    j'ai bien aime la deuxieme partie de la reponse cad:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT "TotalPerColumn", Sum(fn1) AS S1, Sum(fn2) AS S2, Sum(fn3) AS S3, S1+S2+S3 AS TOTAL
    FROM Commande;
    je ne savais pas qu'on pouvait utiliser les fonctions d'aggregation sans passer par GROUP BY.
    Impressionant!!!

    merci

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

Discussions similaires

  1. [AC-2007] Probleme avec “Réaliser des totaux en ligne et en colonne”
    Par Bonero dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/08/2012, 12h48
  2. Réponses: 1
    Dernier message: 27/07/2010, 13h40
  3. Réponses: 0
    Dernier message: 27/05/2010, 17h24
  4. Réponses: 3
    Dernier message: 15/05/2009, 15h18
  5. obtenir en colonne des totaux de lignes
    Par phil83 dans le forum Requêtes
    Réponses: 4
    Dernier message: 03/04/2009, 10h46

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