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

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

oracle怎么列轉(zhuǎn)行 oracle 列轉(zhuǎn)行

oracle列轉(zhuǎn)行、列轉(zhuǎn)行

SELECT REGEXP_SUBSTR('aa,bbb,cccc', '[^,]+', 1, rownum)

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站建設(shè)、網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)公司核心團隊十余年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

from dual?

connect by level = LENGTH(regexp_replace('aa,bbb,cccc', '[^,]+', ''));

with baseData as(

select '1' id,'aaa' name from dual

union all

select '2' ,'bbb' from dual

)

SELECT listagg(name?,',') WITHIN GROUP (ORDER BY id)

FROM? baseData?;

Oracle列轉(zhuǎn)行函數(shù)vm_concat在19C版本不兼容解決方案

? 本文記錄一下Oracle列轉(zhuǎn)行函數(shù)在Oracle11的一些不兼容問題,vm_concat在一些業(yè)務(wù)場景是必須的。不過這個函數(shù)使用要謹慎,底層實現(xiàn)應(yīng)該也是group by等等實現(xiàn)的,性能并不是特別好。這個函數(shù)在Oracle12C是沒有的,在Oracle11是不太兼容的,Oracle10可以正常使用。最近開發(fā)場景遇到這個問題,可以寫到了自定義列轉(zhuǎn)行函數(shù)的辦法去解決。但是這種辦法并不一定適用所有的業(yè)務(wù)場景。

解決方案

? ? 通過自定義函數(shù)解決也是可以的,不過我并不是這樣做的。 下面介紹一下我的解決方法。首先分析一下,Oracle19C不兼容vm_concat列轉(zhuǎn)行函數(shù),并不代表其它函數(shù)不兼容,或許可以找到其它代替的,通過找資料,發(fā)現(xiàn)了Oracle11提供的另外一個函數(shù):listagg()函數(shù) 語法:listagg(參數(shù),‘分隔符’) within group(order by 參數(shù)id),驗證可以實現(xiàn)在19C正常使用

例如:

to_char(wm_concat(t.busi_id))

可以改寫成:

to_char(listagg(t.busi_id,',' ) within GROUP (order by (t.busi_id)))

SQL如:

SELECT listagg(t.busi_id, ',') within GROUP(order by (t.busi_id))

FROM sys_cdc_sync_record t

WHERE cdc_sql_type = 'INSERT_SELECT'

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


網(wǎng)頁名稱:oracle怎么列轉(zhuǎn)行 oracle 列轉(zhuǎn)行
網(wǎng)站網(wǎng)址:http://weahome.cn/article/hhhdio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部