读书人

oracle动态交织表

发布时间: 2012-09-09 09:27:54 作者: rapoo

oracle动态交叉表
有一张表
IDNAMEQUARTERQUANTITY
1开发部春天10000
2开发部夏天50000
3开发部秋天30000
4开发部冬天20000
5销售部春天10000
6销售部夏天4000
7销售部秋天30000
8销售部冬天20000

想要转换为

QUARTER开发部销售部
夏天500004000
春天1000010000
秋天3000030000
冬天2000020000

如果已知部门可以写静态sql:

declarecv_sql varchar2(5000):=' ';cn_number number;cn_i number :=0;sql_query varchar2(5000);begin for v_cur in (select distinct name into cn_number from department)loopcv_sql:= cv_sql||',sum(decode(name,'''|| v_cur.name ||''',quantity,0)) '|| v_cur.name;end loop;sql_query:='create or replace view query_zjx_v as select quarter'||cv_sql||' from department group by quarter';dbms_output.put_line(sql_query);execute immediate sql_query;end;

读书人网 >其他数据库

热点推荐