真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle中如何列轉(zhuǎn)行,oracle列轉(zhuǎn)行函數(shù)怎么用

oracle 行和列轉(zhuǎn)換

如果你要做轉(zhuǎn)換查詢,真心勸你不要這么干,我的寫法很麻煩,一張表不停的查詢,邏輯讀肯定搞得要死。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的大觀網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

如果是往下面這張表灌數(shù),那么可以寫循環(huán),慢慢來一行對(duì)應(yīng)一列,可以根據(jù)表的列和數(shù)據(jù)的對(duì)應(yīng)關(guān)系往里面灌,這個(gè)相對(duì)簡(jiǎn)單些。

我的寫法大概是子查詢+union all 上面為a表

那么就寫為select ‘第一季度' 銷售額,(select 第一季度銷售額 from a where 產(chǎn)品名稱='奶酪')奶酪,(select 第一季度銷售額 from a where 產(chǎn)品名稱='啤酒') from dual

union all

還像上面那么寫,寫第二季度

union all

第三季度

union all

第四季度

一張表重讀查詢8次,如果表很大,我估計(jì)機(jī)器會(huì)宕掉的。

因?yàn)閱为?dú)從一列來看也可以理解為列轉(zhuǎn)行,所以用case when寫也可以,這么寫似乎讀取的次數(shù)會(huì)少些,不過要用到group by分組,天知道二者最后誰的消耗大。不過如果表很大的話,還是那句話,建議新建表然后灌數(shù),這么直接查,真的會(huì)死掉的。

以上為個(gè)人建議,如果找到什么好寫法,也可以研究下。

oracle 列轉(zhuǎn)行

SQL create table t (a number, b varchar2(10));

表已創(chuàng)建。

SQL insert into t values(1,'A');

已創(chuàng)建 1 行。

SQL insert into t values(1,'B');

已創(chuàng)建 1 行。

SQL insert into t values(2,'A');

已創(chuàng)建 1 行。

SQL insert into t values(2,'B');

已創(chuàng)建 1 行。

SQL insert into t values(3,'C');

已創(chuàng)建 1 行。

SQL insert into t values(3,'F');

已創(chuàng)建 1 行。

SQL insert into t values(4,'D');

已創(chuàng)建 1 行。

SQL commit;

提交完成。

SQL select a,max(decode(c,1,b,null)),

2 max(decode(c,2,b,null)),

3 max(decode(c,3,b,null))

4 from(select a,b,row_number()over(partition by a order by b ) c from t)

5* group by a

SQL /

A MAX(DECODE MAX(DECODE MAX(DECODE

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

1 A B

2 A B

3 C F

4 D

SQL

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

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

下面是我做的一個(gè)例子,可以參考下,當(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 sql 列轉(zhuǎn)行

oracle中列傳行可用wm_concat來實(shí)現(xiàn)。

如test表中數(shù)據(jù)如下:

現(xiàn)要將name列一列顯示成行,可用如下語句:

select wm_concat(name) from test;結(jié)果:

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

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

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

create?table

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

,"學(xué)號(hào)"?varchar2(10)

,"班級(jí)"?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

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

declare

sqlstr?varchar2(8000):='';

begin

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

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

select?distinct?row_number()?over?(partition?by?"班級(jí)"?order?by?"學(xué)號(hào)")?seq?

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

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

end?loop;?

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

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

sqlstr:='

select?*?from?(

select?"學(xué)號(hào)","班級(jí)",?''學(xué)號(hào)''||?to_char(

row_number()?over?(partition?by?"班級(jí)"?order?by?"學(xué)號(hào)"))?seq??

from?"表A")?t

pivot(

max("學(xué)號(hào)")

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

)';

--dbms_output.put_line(sqlstr);

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

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

--dbms_output.put_line(sqlstr);

execute?immediate?sqlstr;

end;

--查看結(jié)果

select?*?from?tmp_result;

結(jié)果如下:


網(wǎng)站標(biāo)題:oracle中如何列轉(zhuǎn)行,oracle列轉(zhuǎn)行函數(shù)怎么用
文章路徑:http://weahome.cn/article/phhgpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部