E-Nyar I ain't no nice guy after all | si je reprends la table des fruits :
create table toto
(fruits varchar2(20),
couleurs varchar2(20),
nombre number
);
insert into toto values ('cerise', 'rouge', '10');
insert into toto values ('cerise', 'verte', '5');
insert into toto values ('cerise', 'rouge', '4');
insert into toto values ('ananas', 'verte', '3');
insert into toto values ('ananas', 'jaune', '5');
commit;
ensuite avec un fichier script sql (test.sql par exemple) je génère dynamiquement les colonnes de somme (pivot sur décode / sum) :
store set saved_settings replace
set echo off feedback off heading off pages 0 verify off
spool query.sql
prompt break on report
prompt select fruits
select ', max (decode (couleurs, ''' || couleurs || ''', cnt, 0)) couleurs_' || couleurs
from (select distinct couleurs from toto)
/
prompt from (select couleurs, fruits, sum(nombre) cnt prompt from toto
prompt group by couleurs, fruits)
prompt group by fruits
prompt /
spool off
start saved_settings
start query.sql |
Résultat :
Code :
- SQL> @test.sql
- Úcrit file saved_settings
- break on report
- select fruits
- , max (decode (couleurs, 'jaune', cnt, 0)) couleurs_jaune
- , max (decode (couleurs, 'rouge', cnt, 0)) couleurs_rouge
- , max (decode (couleurs, 'verte', cnt, 0)) couleurs_verte
- from (select couleurs, fruits, sum(nombre) cnt
- from system.toto
- group by couleurs, fruits)
- group by fruits
- /
- cerise 0 14 5
- ananas 5 0 3
|
---------------
Don't fuck me, I'm anonymous.
|