日期:2014-05-17  浏览次数:20757 次

数据表的转置查询问题!!!
如下表
                                                                                                                                                                XH             DDATE                               SXF
-------   --------------   ----------
            1   01-1月   -07                           10
            1   02-1月   -07                           14
            1   03-1月   -07                           23
            2   02-1月   -07                           21
            2   03-1月   -07                           24
            3   01-1月   -07                           13
            3   02-1月   -07                           22
......


想做成如下表

XH     070101   070102   070103   ...........
1         10           14             23
2         0               21           24
3         13             22             0


Oracle中该如何实现  
谢谢各位大大


------解决方案--------------------



--测试数据
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; <