Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2011, 17h53   #1
Invité de passage
 
Inscription : janvier 2005
Messages : 15
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 15
Points : 3
Points : 3
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 :
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
Type de fichier : xls Requêtes - résultats souhaités.xls (23,5 Ko, 2 affichages)
toto753 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 18h23   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 23h56   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 15
Points : 1
Points : 1
Tu as déjà essayé le group by cube ??
Fcapitaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web