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

SQL Oracle Discussion :

select - union - group by pour lignes d'agrégation


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 17
    Points
    17
    Par défaut select - union - group by pour lignes d'agrégation
    Bonjour,

    J'ai besoin de votre aide, SVP.

    J'ai ajouté en PJ le même texte que ce qui suit mais en tableau et avec du formatage, ce sera plus facile à visualiser pour vous je pense.

    J'ai mis ça en 3 étapes avec des difficultés supplémentaires. Si certains pouvaient du moins m'aider sur la 1ère ce serait sympa !

    Merci beaucoup par avance !

    J'ai pour l'instant une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select date,a,b,c,durée,valeur					
    from table					
    order by date
    qui me donne :

    date_a1_1	a1	a1_b1	a1_c1	a1_durée1	a1_valeur1
    date_a1_2	a1	a1_b2	a1_c2	a1_durée2	a1_valeur2
    …	…	…	…	…	
    date_a1_n	a1	a1_bn	a1_cn	a1_duréen	a1_valeurn
    date_a2_1	a2	a2_b1	a2_c1	a2_durée1	a2_valeur1
    date_a2_2	a2	a2_b2	a2_c2	a2_durée2	a2_valeur2
    …	…	…	…	…	
    date_a2_n	a2	a2_bn	a2_cn	a2_duréen	a2_valeurn
    je souhaiterais avec un union et un group by ajouter les lignes d'agrégation afin d'avoir :

    date_a1_1	a1	a1_b1	a1_c1	a1_durée1	a1_valeur1
    date_a1_2	a1	a1_b2	a1_c2	a1_durée2	a1_valeur2
    …	…	…	…	…	
    date_a1_n	a1	a1_bn	a1_cn	a1_duréen	a1_valeurn
    date_a1_1	a1	vide	vide	somme(a1_durées)	somme(a1_valeurs)
    date_a2_1	a2	a2_b1	a2_c1	a2_durée1	a2_valeur1
    date_a2_2	a2	a2_b2	a2_c2	a2_durée2	a2_valeur2
    …	…	…	…	…	
    date_a2_n	a2	a2_bn	a2_cn	a2_duréen	a2_valeurn
    date_a2_1	a2	vide	vide	somme(a2_durées)	somme(a2_valeurs)
    Et si possible avec une difficulté supplémentaire :

    ma requête me donne ça (avec les a3 qui viennent s'intercaler au milieu) :

    date_a1_1	a1	a1_b1	a1_c1	a1_durée1	a1_valeur1
    date_a1_2	a1	a1_b2	a1_c2	a1_durée2	a1_valeur2
    …	…	…	…	…	
    date_a1_n	a1	a1_bn	a1_cn	a1_duréen	a1_valeurn
    date_a2_1	a2	a2_b1	a2_c1	a2_durée1	a2_valeur1
    date_a2_2	a2	a2_b2	a2_c2	a2_durée2	a2_valeur2
    ,,,					
    date_a3_1	a3	a3_b1	a3_c1	a3_durée1	a3_valeur1
    date_a3_2	a3	a3_b2	a3_c2	a3_durée2	a3_valeur2
    …	…	…	…	…	
    date_a3_n	a3	a3_bn	a3_cn	a3_duréen	a3_valeurn
    …	…	…	…	…	
    date_a2_n	a2	a2_bn	a2_cn	a2_duréen	a2_valeurn
    
    et j'aimerais obtenir ça :

    date_a1_1	a1	a1_b1	a1_c1	a1_durée1	a1_valeur1
    date_a1_2	a1	a1_b2	a1_c2	a1_durée2	a1_valeur2
    …	…	…	…	…	
    date_a1_n	a1	a1_bn	a1_cn	a1_duréen	a1_valeurn
    date_a1_1	a1	vide	vide	somme(a1_durées)	somme(a1_valeurs)
    date_a3_1	a3	a3_b1	a3_c1	a3_durée1	a3_valeur1
    date_a3_2	a3	a3_b2	a3_c2	a3_durée2	a3_valeur2
    …	…	…	…	…	
    date_a3_n	a3	a3_bn	a3_cn	a3_duréen	a3_valeurn
    date_a3_1	a3	vide	vide	somme(a3_durées)	somme(a3_valeurs)
    date_a2_1	a2	a2_b1	a2_c1	a2_durée1	a2_valeur1
    date_a2_2	a2	a2_b2	a2_c2	a2_durée2	a2_valeur2
    …	…	…	…	…	
    date_a2_n	a2	a2_bn	a2_cn	a2_duréen	a2_valeurn
    date_a2_1	a2	vide	vide	somme(a2_durées)	somme(a2_valeurs)
    Ultime éventuelle difficulté :

    pour certains il faudrait

    date_a4_1	a4	a4_b1	a4_c1	a4_durée1	a4_valeur1
    date_a4_1	a4	vide	vide	a4_durée1	a4_valeur1
    date_a4_2	a4	a4_b2	a4_c2	a4_durée2	a4_valeur2
    date_a4_2	a4	vide	vide	a4_durée2	a4_valeur2
    et non

    date_a4_1	a4	a4_b1	a4_c1	a4_durée1	a4_valeur1
    date_a4_2	a4	a4_b2	a4_c2	a4_durée2	a4_valeur2
    date_a4_1	a4	vide	vide	somme(a4_durées)	somme(a4_valeurs)
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par toto753 Voir le message
    J'ai ajouté en PJ le même texte que ce qui suit mais en tableau et avec du formatage, ce sera plus facile à visualiser pour vous je pense.
    Que ce soit dans le fichier Excel ou sur le forum, les données sont relativement illisibles pas vraiment utiles accompagnées d'explications pas vraiment claires non plus.

    Cela dit, je pense que ce que vous chercher c'est la fonction ROLLUP.
    Voila déjà de quoi vous donner une piste de recherche :
    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
    18
    19
    With MaTable as
    (
    select date '2011-01-01' as c1, 'A1' as c2, 'A1B1' as c3, 5 as c4 from dual union all
    select date '2011-01-01'      , 'A1'      , 'A1B2'      , 3       from dual union all
    select date '2011-02-01'      , 'A2'      , 'A2B1'      , 7       from dual union all
    select date '2011-02-01'      , 'A2'      , 'A2B2'      , 4       from dual
    )
      select c1, c2, c3, sum(c4) as c4
        from MaTable
    group by c1, c2, rollup(c3);
     
    C1         C2 C3           C4
    ---------- -- ---- ----------
    01/01/2011 A1 A1B1          5
    01/01/2011 A1 A1B2          3
    01/01/2011 A1               8
    01/02/2011 A2 A2B1          7
    01/02/2011 A2 A2B2          4
    01/02/2011 A2              11

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Tu as déjà essayé le group by cube ??

Discussions similaires

  1. [2k5] Requete Select Union sauf pour id=+1
    Par sdisp+ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2012, 14h17
  2. plusieurs Group Band pour une même ligne détail
    Par SergioMaster dans le forum Rave
    Réponses: 3
    Dernier message: 12/02/2009, 11h25
  3. Réponses: 2
    Dernier message: 02/02/2008, 22h38
  4. Select, union, éliminer des résultats.
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/06/2004, 09h42
  5. Selection de Groupes ki ne sont pas sous groupes...
    Par superdada dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2003, 14h42

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