Bonjour,
Je veux afficher de cette manièreCode:
1
2
3
4
5 DATE NOM VALUE2 01/01/01 TOTO 1 01/01/02 TITI 2 01/02/01 TOTO 3 01/02/02 TITI 4
Code:
1
2
3 NOM 01/01/01 01/01/02 01/02/01 01/02/02 TOTO 1 0 3 0 TITI 0 2 0 4
Version imprimable
Bonjour,
Je veux afficher de cette manièreCode:
1
2
3
4
5 DATE NOM VALUE2 01/01/01 TOTO 1 01/01/02 TITI 2 01/02/01 TOTO 3 01/02/02 TITI 4
Code:
1
2
3 NOM 01/01/01 01/01/02 01/02/01 01/02/02 TOTO 1 0 3 0 TITI 0 2 0 4
Quelle version d'Oracle ?
Bonjour,
En recherchant sur les forums avec les mots clés PIVOT et ORACLE, il y a déjà plusieurs sujets qui traitent de ce genre de problème.
Voilà une solution
qui a ses limites, bien sûr.Code:
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 Connected to Oracle9i Enterprise Edition Release 9.2.0.5.0 Connected as mni SQL> SQL> With Data As ( 2 Select to_date('01/01/2001','DD/MM/YYYY') As Dat, 'TOTO' As Nom, 1 As Value from dual union all 3 Select to_date('01/01/2002','DD/MM/YYYY'),'TITI',2 from dual union all 4 Select to_date('01/02/2001','DD/MM/YYYY'),'TOTO',3 from dual union all 5 Select to_date('01/02/2002','DD/MM/YYYY'),'TITI',4 from dual 6 ) 7 Select nom, 8 Max(Case When dat = to_date('01/01/2001','DD/MM/YYYY') Then value Else 0 End) "01/01/2001", 9 Max(Case When dat = to_date('01/01/2002','DD/MM/YYYY') Then value Else 0 End) "01/01/2002", 10 Max(Case When dat = to_date('01/02/2001','DD/MM/YYYY') Then value Else 0 End) "01/02/2001", 11 Max(Case When dat = to_date('01/02/2002','DD/MM/YYYY') Then value Else 0 End) "01/02/2002" 12 From Data 13 Group By nom 14 Order By nom Desc 15 / NOM 01/01/2001 01/01/2002 01/02/2001 01/02/2002 ---- ---------- ---------- ---------- ---------- TOTO 1 0 3 0 TITI 0 2 0 4 SQL>