Oracle 行轉列 的例子

2021-06-16 12:23:59 字數 1489 閱讀 2299

乙個同事寫的,那出來和大家分享一下

create table score

(fname nvarchar2(50),

fsubject nvarchar2(50),

fresult decimal(18,0)

);insert into score values('張三','語文',20);

insert into score values('張三','數學',20);

insert into score values('張三','英語',20);

insert into score values('張三','地理',20);

insert into score values('張三','語文',1);

insert into score values('張三','數學',2);

insert into score values('張三','英語',3);

insert into score values('張三','地理',4);

insert into score values('李四','語文',20);

insert into score values('李四','數學',20);

insert into score values('李四','英語',20);

insert into score values('李四','化學',20);

insert into score values('李四','計算機技術',20);

begin

declare v_sql nvarchar2(8000);

begin

select 'select  fname 姓名' into v_sql from dual;

select v_sql||','||ltrim(max(sys_connect_by_path(x, ',')), ',') into v_sql

from (

select * from (

select rn,'

sum(case to_char(fsubject) when '''||fsubject||''' then fresult else 0 end) '||fsubject  x

from (select rownum rn,fsubject from (select fsubject from score group by fsubject)) i

) order by rn

)ystart with rn = (select count(1) from (select fsubject from score group by fsubject) )

connect by  prior  rn-1 = rn;

select v_sql || 'from score group by fname'  into v_sql from dual;

dbms_output.put_line(v_sql);

end;

end;

sql 行轉列 例子

一.在行轉列時,拼結多個問題的答案,放到乙個列中顯示 create function dbo aggregatestring func code varchar 20 emp id int,store id int,biz date varchar 20 acvt id int,qst id int...

oracle 行轉列,多行轉列

問題描述 應公司要求,設計功能,乙個id,對應不同的值,展示的時候不同的值拼接展示,如何實現 解決思路 1 拼接字串,想到了 oracle function 這樣肯定能實現,但是比較麻煩 2 oracle 自帶的乙個函式 wm concat 函式 非常給力 上 測試表1 create table c...

oracle行轉列實踐

在oracle 11g中,oracle 增加了2個查詢 pivot 行轉列 和unpivot 列轉行 pivot 聚合函式 for 列名 in 型別 其中 in 中可以指定別名,in中還可以指定子查詢 行轉列 select org id,item,sum value from rhsa gcfx r...