高手帮忙解决oracle一个行列转换的问题!
通过统计得到下面一张表(表的行数不定)
code number
01 50
02 38
03 23
……
希望把行列进行转换
得到结果为
列名:01 02 03……
数据:50 38 23……
即得到一行数据即可。
因为是在统计报表的sql语句中使用,所以必须用sql语句实现(郁闷!)
那位高手帮帮忙!谢谢!
帮顶给分
------解决方案--------------------我也想实现这样一个功能,正在研究中。
顶顶顶顶顶
------解决方案----------------------测试数据
create table table2(ccode varchar2(10), cnumber varchar2(10));
insert into table2
select '01 ', '50 ' from dual union all
select '02 ', '38 ' from dual union all
select '03 ', '23 ' from dual union all
select '04 ', '24 ' from dual;
--存储过程
create or replace procedure getRstData( rst out sys_refcursor)
is
begin
declare
cursor cur is select ccode from table2;
str varchar2(4000);
fcode varchar2(10);
begin
open cur;
loop
fetch cur into fcode;
exit when cur%notfound;
str:=str|| ',sum(decode(ccode, '||chr(39)||fcode||chr(39)|| ',cnumber,0)) " '||fcode|| ' " ';
end loop;
str:= 'select '||substr(str,2,length(str)-1)|| ' from table2 ';
dbms_output.put_line(str);
close cur;
open rst for str;
end;
end;
--输出结果
01 02 03 04
--------------
50 38 23 24