求助,oracle多行資料合併成一行

時間 2021-10-14 22:25:42

1樓:匿名使用者

select (wm_concat(t.name)) as allname from test t

注意資料庫的限制長度

2樓:匿名使用者

我現在身邊沒有 資料庫環境 這個是我以前寫的sql

你看一下,修改一下就可以了

oracle分組查詢用逗號分隔結果sql語句

表一:學號 姓名

1 張三

2 李四

3 王五

。。。。

表二:學號 選修課程

1 語文

1 數學

2 英語

2 語文

3 數學

3 英語

3 歷史

。。。。。

要求查處結果

學好 姓名 選修課程所有課程名稱以,隔開

1 張三 語文,數學

2 李四 英語,語文

3 王五 數學,英語,歷史

;create table a_lyh_test

asselect 1 as "學號" , '張三' as "姓名" from dual

union all

select 2 as "學號" , '李四' as "姓名" from dual

union all

select 3 as "學號" , '王五' as "姓名" from dual

;create table b_lyh_test

asselect 1 as "學號" , '語文' as "選修課程" from dual

union all

select 1 as "學號" , '數學' as "選修課程" from dual

union all

select 2 as "學號" , '英語' as "選修課程" from dual

union all

select 2 as "學號" , '語文' as "選修課程" from dual

union all

select 3 as "學號" , '數學' as "選修課程" from dual

union all

select 3 as "學號" , '英語' as "選修課程" from dual

union all

select 3 as "學號" , '歷史' as "選修課程" from dual

;select f."學號"

,f."姓名"

,ltrim(max(sys_connect_by_path(f."選修課程",','))

keep (dense_rank last order by f.pnum),',') as "選修課程"

from

(select t."學號"

,t."姓名"

,t."選修課程"

,row_number() over(partition by t."學號" order by t."姓名") as pnum

,row_number() over(partition by t."學號" order by t."姓名")-1 as lnum

from

(select a."學號",a."姓名",b."選修課程"

from a_lyh_test a

,b_lyh_test b

where a."學號" = b."學號"

) t) f

group by f."學號",f."姓名"

connect by f.lnum = prior f.pnum and f."學號" = prior f."學號"

start with f.pnum = 1;

3樓:匿名使用者

select id ,listagg( name, ',' ) within group ( order by id ) as name

from table_name

group by id;

4樓:匿名使用者

select wm_concat(name) from test

5樓:匿名使用者

你這就是行轉列,行數太多不建議這樣做,有很多方法,典型的有decode,多寫幾個decode。

求助,oracle多行資料合併成一行

select wm concat t.name as allname from test t 注意資料庫的限制長度 我現在身邊沒有 資料庫環境 這個是我以前寫的sql 你看一下,修改一下就可以了 oracle分組查詢用逗號分隔結果sql語句 表一 學號 姓名 1 張三 2 李四 3 王五 表二 學號...

ORACLE資料庫多行資料合併為1行的問題,急用

你看看是不是這樣的,你資料排版太混亂了 select csrq,qyph,pczl,wm concat jyxmmc wm concat jyz xydj,je from 表名 group by csrq,qyph,pczl,xydj,je 補充 oracle跟sqlserver不一樣,如果儲存過程...

在oracle中使用cursor合併多行資料

如果這兩行有個共同的其他列作為分組,標誌他們是同一組 比如姓名編號之類的,是可以group by後min出來的。select 姓名,min 引流管 as 引流管,min 化療 as 化療,min 放療 as 放療。from 記錄表。group by 姓名 如何將oracle中同一列的多行記錄拼接成一...