免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Oracle如何將列轉行 列轉行oracle方法

oracle列轉行

INSERT INTO 新表 (SELECT ID, '呼吸系統疾病' FROM 原表 WHERE 呼吸系統疾病有無 = 1 UNION SELECT ID, '消化系統疾病' FROM 原表 WHERE 消化系統疾病有無 = 1

網站建設哪家好,找成都創新互聯!專注于網頁設計、網站建設、微信開發、成都微信小程序、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了觀山湖免費建站歡迎大家使用!

UNION SELECT ID, '循環系統疾病' FROM 原表 WHERE 循環系統疾病有無 = 1)

如果使用行轉列,還得使用merge into,還不如上面的語句清晰。

oracle中怎么將列轉換為行

可以使用wm_concat()函數;

下面是我做的一個例子,可以參考下,當然具體語法可以百度,也可以去官方文檔查:

SCOTT@ ysdb1show user

USER is "SCOTT"

SCOTT@ ysdb1create table test_concat(id number(5),name varchar2(10));

Table created.

SCOTT@ ysdb1insert into test_concat values(1,'a');

1 row created.

SCOTT@ ysdb1insert into test_concat values(1,'b');

1 row created.

SCOTT@ ysdb1insert into test_concat values(1,'c');

1 row created.

SCOTT@ ysdb1insert into test_concat values(2,'q');

1 row created.

SCOTT@ ysdb1insert into test_concat values(2,'w');

1 row created.

SCOTT@ ysdb1insert into test_concat values(2,'e');

1 row created.

SCOTT@ ysdb1insert into test_concat values(2,'f');

1 row created.

SCOTT@ ysdb1select * from test_concat;

ID NAME

---------- ----------

1 a

1 b

1 c

2 q

2 w

2 e

2 f

7 rows selected.

SCOTT@ ysdb1select wm_concat(name) from test_concat;

WM_CONCAT(NAME)

--------------------------------------------------------------------------------

a,b,c,q,w,e,f

SCOTT@ ysdb1select id,wm_concat(name) from test_concat group by id;

ID WM_CONCAT(NAME)

---------- --------------------------------------------------------------------------------

1 a,c,b

2 q,f,e,w

Oracle中列轉行,如何實現?

基本思路:對每班學生排序,根據序號構造列名,拼接動態sql

--測試數據

create?table

("學生"?varchar2(10)

,"學號"?varchar2(10)

,"班級"?varchar2(10)

);?

insert?into?"表A"?

select?'張三','100','一班'?from?dual?union?all

select?'李四','101','二班'?from?dual?union?all

select?'王五','102','一班'?from?dual?union?all

select?'趙六','103','三班'?from?dual?union?all

select?'李二','104','二班'?from?dual

--動態拼接Pivot??

declare

sqlstr?varchar2(8000):='';

begin

--構造類似于?'學號1','學號2',...??的字符串

for?x?in?(?????

select?distinct?row_number()?over?(partition?by?"班級"?order?by?"學號")?seq?

from?"表A"?order?by?seq?)?loop?

sqlstr?:=?sqlstr?||?','''?||?'學號'?||to_char(x.seq)||'''';?

end?loop;?

sqlstr:=substr(sqlstr,2,length(sqlstr)-1);

--將前面構造的字符串放入Pivot語句中

sqlstr:='

select?*?from?(

select?"學號","班級",?''學號''||?to_char(

row_number()?over?(partition?by?"班級"?order?by?"學號"))?seq??

from?"表A")?t

pivot(

max("學號")

for?seq?in?('||sqlstr||')??

)';

--dbms_output.put_line(sqlstr);

--將查詢結果放入臨時視圖中

sqlstr?:=?'CREATE?OR?REPLACE?VIEW?tmp_result??AS?'||?sqlstr;

--dbms_output.put_line(sqlstr);

execute?immediate?sqlstr;

end;

--查看結果

select?*?from?tmp_result;

結果如下:

當前標題:Oracle如何將列轉行 列轉行oracle方法
地址分享:http://m.newbst.com/article8/hjhoip.html

成都網站建設公司_創新互聯,為您提供網站設計關鍵詞優化網頁設計公司動態網站軟件開發企業建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站