Bonjour à tous,

J'ai de nouveau une question sur une requête de mise à jour de données

Mes données sources sont stockées dans la table suivante:
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
20
21
22
23
24
 
--Table initiale des données
 
CREATE TABLE TABLEDONNEES
 (ANNEE VARCHAR2(4), ETB VARCHAR2(2), ID_NUM NUMBER, 
  TYPE VARCHAR2(1), STATUT VARCHAR2(2),
  NB1 NUMBER, NB2 NUMBER, NB3 NUMBER, NB4 NUMBER);
 
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AA',1,'H','NN',1,0,1,0);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AA',2,'H','NX',0,0,1,0);  
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AA',3,'S','NN',0,0,1,5);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AA',4,'S','NN',1,12,1,12);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AB',1,'H','NN',1,0,1,0);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AB',2,'H','NX',1,0,1,0);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AB',3,'S','NN',1,4,1,4);
INSERT INTO TABLEDONNEES(ANNEE, ETB, ID_NUM, TYPE, STATUT, NB1, NB2, NB3, NB4)
VALUES ('2007','AB',4,'S','NN',0,0,1,20);
Je cherche à calculer et à stocker dans une 2ème table pour chaque ANNEE, pour chaque ETB et par TYPE des sommes de NB1, NB2, NB3 et NB4 selon STATUT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
--Table de stockage des résultats
CREATE TABLE TABLERESULT
 (ANNEE VARCHAR2(4), ETB VARCHAR2(2), TYPE VARCHAR2(1), NB1_NN NUMBER, NB1_NX NUMBER, NB2_NN NUMBER, NB2_NX NUMBER, NB3_NN NUMBER, NB3_NX NUMBER, NB4_NN NUMBER, NB4_NX NUMBER);
J'ai d'abord écrit une requête qui récupère pour chaque ANNEE, chaque ETB, chaque TYPE et chaque STATUT les sommes NB1, NB2, NB3 et NB4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SELECT annee, etb, type, statut, SUM(nb1) AS nb1, SUM(nb2) AS nb2, SUM(nb3) AS nb3, SUM(nb4) AS nb4
FROM tabledonnees
GROUP BY annee, etb, type, statut;
Je n'arrive pas à écrire une requête qui insert une seule ligne par ANNEE, ETB et TYPE dans la table TABLERESULT avec les 8 NB* différents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
--Table finale que j'aimerais obtenir
 
ANNEE, ETB, TYPE, NB1_NN, NB1_NX, NB2_NN, NB2_NX, NB3_NN, NB3_NX, NB4_NN, NB4_NX
---------------------------------------------------------------------------------------
2007,AA,H,1,0,0,0,1,1,0,0
2007,AA,S,1,0,12,0,2,0,17,0
2007,AB,H,1,1,0,0,1,1,0,0
2007,AB,S,1,0,4,0,2,0,24,0
Pourriez-vous m'aider ?
Merci à tous pour les bonnes idées que vous pourrez avoir.

MarieO