1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| SQL> DROP TABLE PAYS;
Table supprimée.
SQL> DROP TABLE DEPT;
Table supprimée.
SQL> CREATE TABLE PAYS (NOM_PAYS VARCHAR2(10));
Table créée.
SQL> CREATE TABLE DEPT (NOM_PAYS VARCHAR2(10), NUM_DEPT NUMBER(2), VALUE NUMBER(
5));
Table créée.
SQL> INSERT INTO PAYS VALUES ('FRANCE');
1 ligne créée.
SQL> INSERT INTO PAYS VALUES ('ALLEMAGNE');
1 ligne créée.
SQL> INSERT INTO DEPT VALUES ('FRANCE',1, 10);
1 ligne créée.
SQL> INSERT INTO DEPT VALUES ('FRANCE',2, 10);
1 ligne créée.
SQL> INSERT INTO DEPT VALUES ('FRANCE',3, 10);
1 ligne créée.
SQL> INSERT INTO DEPT VALUES ('FRANCE',4, 20);
1 ligne créée.
SQL> INSERT INTO DEPT VALUES ('ALLEMAGNE',2, 20);
1 ligne créée.
SQL> SELECT * FROM PAYS;
NOM_PAYS
----------
FRANCE
ALLEMAGNE
SQL> SELECT * FROM DEPT;
NOM_PAYS NUM_DEPT VALUE
---------- ---------- ----------
FRANCE 1 10
FRANCE 2 10
FRANCE 3 10
FRANCE 4 20
ALLEMAGNE 2 20
SQL> SELECT T1.NOM_PAYS, T2.NUM_DEPT, SUM(CASE WHEN T1.NOM_PAYS=T2.NOM_PAYS THEN VALUE ELSE 0 END) FROM PAYS T1, DEPT T2 GROUP BY T1.NOM_PAYS, T2.NUM_DEPT;
NOM_PAYS NUM_DEPT SUM(CASEWHENT1.NOM_PAYS=T2.NOM_PAYSTHENVALUEELSE0END)
---------- ---------- -----------------------------------------------------
FRANCE 1 10
FRANCE 2 10
FRANCE 3 10
FRANCE 4 20
ALLEMAGNE 1 0
ALLEMAGNE 2 20
ALLEMAGNE 3 0
ALLEMAGNE 4 0
8 ligne(s) sélectionnée(s). |
Partager