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:
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
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);
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 --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);
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 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;
Pourriez-vous m'aider ?
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
Merci à tous pour les bonnes idées que vous pourrez avoir.
MarieO
Partager