欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle怎么將列轉(zhuǎn)行,行轉(zhuǎn)列oracle方法

Oracle中列轉(zhuǎn)行,如何實現(xiàn)?

基本思路:對每班學(xué)生排序,根據(jù)序號構(gòu)造列名,拼接動態(tài)sql

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,浮山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:浮山等地區(qū)。浮山做網(wǎng)站價格咨詢:18982081108

--測試數(shù)據(jù)

create?table

("學(xué)生"?varchar2(10)

,"學(xué)號"?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

--動態(tài)拼接Pivot??

declare

sqlstr?varchar2(8000):='';

begin

--構(gòu)造類似于?'學(xué)號1','學(xué)號2',...??的字符串

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

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

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

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

end?loop;?

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

--將前面構(gòu)造的字符串放入Pivot語句中

sqlstr:='

select?*?from?(

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

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

from?"表A")?t

pivot(

max("學(xué)號")

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

)';

--dbms_output.put_line(sqlstr);

--將查詢結(jié)果放入臨時視圖中

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

--dbms_output.put_line(sqlstr);

execute?immediate?sqlstr;

end;

--查看結(jié)果

select?*?from?tmp_result;

結(jié)果如下:

oracle中怎么將列轉(zhuǎn)換為行

可以使用wm_concat()函數(shù);

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

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列轉(zhuǎn)行

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

UNION SELECT ID, '循環(huán)系統(tǒng)疾病' FROM 原表 WHERE 循環(huán)系統(tǒng)疾病有無 = 1)

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

oracle 多列 列轉(zhuǎn)行

Oracle?11g 行列互換 pivot 和 unpivot 說明在Oracle 11g中,Oracle 又增加了2個查詢:pivot(行轉(zhuǎn)列) 和unpivot(列轉(zhuǎn)行)

參考:、 一下,網(wǎng)上有一篇比較詳細的文檔:

pivot 列轉(zhuǎn)行

測試數(shù)據(jù) (id,類型名稱,銷售數(shù)量),案例:根據(jù)水果的類型查詢出一條數(shù)據(jù)顯示出每種類型的銷售數(shù)量。

?

123456789

create table demo(id int,name varchar(20),nums int);? ---- 創(chuàng)建表insert into demo values(1, '蘋果', 1000);insert into demo values(2, '蘋果', 2000);insert into demo values(3, '蘋果', 4000);insert into demo values(4, '橘子', 5000);insert into demo values(5, '橘子', 3000);insert into demo values(6, '葡萄', 3500);insert into demo values(7, '芒果', 4200);insert into demo values(8, '芒果', 5500);

分組查詢 (當(dāng)然這是不符合查詢一條數(shù)據(jù)的要求的)

?

1

select name, sum(nums) nums from demo group by name

行轉(zhuǎn)列查詢

?

1

select * from (select name, nums from demo) pivot (sum(nums) for name in ('蘋果' 蘋果, '橘子', '葡萄', '芒果'));

注意: pivot(聚合函數(shù) for 列名 in(類型)) ,其中 in(‘’) 中可以指定別名,in中還可以指定子查詢,比如 select distinct code from customers

當(dāng)然也可以不使用pivot函數(shù),等同于下列語句,只是代碼比較長,容易理解

?

12

select * from (select sum(nums) 蘋果 from demo where name='蘋果'),(select sum(nums) 橘子 from demo where name='橘子'),???????(select sum(nums) 葡萄 from demo where name='葡萄'),(select sum(nums) 芒果 from demo where name='芒果');

unpivot 行轉(zhuǎn)列

顧名思義就是將多列轉(zhuǎn)換成1列中去

案例:現(xiàn)在有一個水果表,記錄了4個季度的銷售數(shù)量,現(xiàn)在要將每種水果的每個季度的銷售情況用多行數(shù)據(jù)展示。

創(chuàng)建表和數(shù)據(jù)

?

1234567

create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);?insert into Fruit values(1,'蘋果',1000,2000,3300,5000);insert into Fruit values(2,'橘子',3000,3000,3200,1500);insert into Fruit values(3,'香蕉',2500,3500,2200,2500);insert into Fruit values(4,'葡萄',1500,2500,1200,3500);select * from Fruit

列轉(zhuǎn)行查詢

?

1

select id , name, jidu, xiaoshou from Fruit unpivot (xiaoshou for jidu in (q1, q2, q3, q4) )

注意: unpivot沒有聚合函數(shù),xiaoshou、jidu字段也是臨時的變量

網(wǎng)站題目:oracle怎么將列轉(zhuǎn)行,行轉(zhuǎn)列oracle方法
文章源于:http://chinadenli.net/article42/heeiec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、做網(wǎng)站、服務(wù)器托管、網(wǎng)站制作網(wǎng)站營銷

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)