日期:2014-05-17 浏览次数:21442 次
--测试数据 create table t (XH varchar2(10), DDATE date, SXF int); insert into t select 1,sysdate,10 from dual union all select 1,sysdate+1,14 from dual union all select 1,sysdate+2,23 from dual union all select 2,sysdate,21 from dual union all select 2,sysdate+1,24 from dual union all select 3,sysdate,13 from dual union all select 3,sysdate+1,22 from dual; -- create or replace package sp_test is type ResultData is ref cursor; procedure getRstData( rst out ResultData); end sp_test; / create or replace package body sp_test is procedure getRstData( rst out ResultData) is begin declare cursor cur is select distinct (DDATE) from t; tmp_ddate date; str varchar2(4000); begin str:='select xh'; open cur; loop fetch cur into tmp_ddate; exit when cur%notfound; str:=str||',sum(decode(to_char(ddate,''yyyymmdd''),'||chr(39)||to_char(tmp_ddate,'yyyymmdd')||chr(39)||',sxf,0)) "'||to_char(tmp_ddate,'yyyymmdd')||'"'; end loop; str:=str||' from t group by xh'; -- dbms_output.put_line(str); close cur; open rst for str; end; end; end sp_test; / --输出结果 1 10 14 23 2 21 24 0 3 13 22 0
------解决方案--------------------
在这点搜索-行列转换
你可以搜索到一大把的有关帖子
固定列的就用DECODE不固定的就用存储过程
------解决方案--------------------
行列转换已经成为周经问题了