乙個同事寫的,那出來和大家分享一下
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...