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

時間 2022-01-25 21:10:33

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資料庫多行資料合併為1行的問題,急用

6樓:匿名使用者

你看看是不是這樣的,你資料排版太混亂了

select csrq,qyph,pczl,wm_concat(jyxmmc),wm_concat(jyz),xydj,je from 表名 group by csrq,qyph,pczl,xydj,je

----------補充-----------

oracle跟sqlserver不一樣,如果儲存過程的話只能返回類似sqlserver中print那種

這樣的話,不知道能符合你要求不

表名我起的test

create table test

(csrq varchar2(10),

qyph varchar2(20),

pczl number(10,4),

jyxmmc varchar2(10),

jyz number(10,4),

xydj number(10,4),

je number(10,4))

insert into test values ('2014-5-6','201405070026',111.2300,'矽',3.1260,1280.

0000,954050.8544);

insert into test values ('2014-5-6','201405070026',111.2300,'碳',3.4580,1280.

0000,954050.8544);

insert into test values ('2014-5-6','201405070026',111.2300,'磷',0.0770,1280.

0000,954050.8544);

insert into test values ('2014-5-6','201405070026',111.2300,'鎳',6.7010,1280.

0000,954050.8544);

insert into test values ('2014-5-6','201405070026',111.2300,'鉻',2.5940,1280.

0000,954050.8544);

insert into test values ('2014-5-6','201405070026',111.2300,'硫',0.2020,1280.

0000,954050.8544);

執行select 'csrq','qyph','pczl',replace(wm_concat(jyxmmc),',','    '),'xydj','je' from test

union all

select to_char(csrq),to_char(qyph),to_char(pczl),replace(to_char(wm_concat(jyz)),',',' '),to_char(xydj),to_char(je) from test

group by to_char(csrq),to_char(qyph),to_char(pczl),to_char(xydj),to_char(je)結果

7樓:

select csrq,qyph,pczl,sum(case when jyxmmc='矽' then jyz else 0) as 矽,

sum(case when jyxmmc='碳' then jyz else 0) as 碳

......

from table_name

group by csrq,qyph,pczl;行轉列就是這樣,列舉值有多少寫多少

8樓:

用group by 分組吧

如何將oracle中同一列的多行記錄拼接成一個字串

9樓:刺友互

1、新建php檔案。

2、宣告陣列變數。

3、用implode函式使陣列拼接成字串,連線符為-。

4、輸出連線後的字串。

5、預覽效果如圖。

6、用implode函式使陣列拼接成字串,連線符為?。

7、預覽效果如圖。

10樓:匿名使用者

需要用wm_concat函式來實現。

如目前在emp表中查詢資料如下:

要按照deptno相同的將ename以字串形式合併,可用如下語句:

select deptno,wm_concat(ename) from emp group by deptno;

查詢結果:

11樓:笨笨

我們常常說 用sql將oracle中同一列的多行記錄拼接成一個字串是如何實現的:[sql]-- 原始資料-- a 111-- b 222-- a 333-- a 444-- b 555-- 最終結果-- a 111*333*444selectl4.l_time,max(substr(l4.

分組內容,2)) 最終欄位值from(selectl3.l_time,sys_connect_by_path(l3.l_content,'*') as 分組內容from(selectl2.

l_time,l2.l_content,l2.l_time||l2.

分組內編號 as 分組欄位加編號,l2.l_time||(l2.分組內編號-1) as 上級分組欄位加編號from(selectl1.

l_time -- 分組依據,l1.l_content -- 同一列中 要合併的不同行 的值,row_number() over (partition by l1.l_time order by l1.

l_content asc) 分組內編號from logs l1) l2) l3start with l3.上級分組欄位加編號 like '%0'connect by prior l3.分組欄位加編號=l3.

上級分組欄位加編號) l4where l_time='111'group by l4.l_time-- row_number() over(partition by a order by b desc) 新列名-- 根據a分組,在分組內部根據b排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)-- sys_connect_by_path 函式: 第一個引數是形成樹形式的欄位,第二個引數是父級和其子級分隔顯示用的分隔符-- connect by prior 是標示父子關係的對應-- start with 代表你要開始遍歷的的節點

excel將多行資料分別分行,excel中一行多個資料怎麼分成多行?

3全部親,決定還是幫你一把 測試效果和 如下。開啟你的excel檔案,按 alt f11 開啟vba編輯視窗,然後在左側對應的sheet上雙擊,右側空白處貼上下面的 關閉vba視窗。然後按 alt f8 開啟巨集視窗,選擇剛插入的巨集,點選 執行 sub cf dim i,j,r as long r...

excel表中把多行資料變為一行,如何操作

小小歐平兒 1 啟動辦公軟體工具,新建空白excel 2 在空白區域填充自己需要測試的內容。3 因為要把多行資料合併到一行中,選擇要合併的行,拉寬列的寬度。4 然後選擇需要合併到一行資料的這一列資料。5 然後進入在開始選單中,選擇編輯再選擇填充,在填充選擇中選擇內容重拍即可。6 這就是最後的效果了。...

ecel中怎麼把兩行合併成一行原有的資料合併在一

1 在excel中可以把兩行合併成一行,原有的資料合併在一起,通過輸入公式的方法進行合併。公式為 e5 f5 也可寫成 e5 f5 的形式。2 具體操作如下所示。需要合併列的資料 在單元輸入公式 e5 f5 向下拉動,合併後的形式 c1 a1 b1然後把公式往下拖,再選中c列,右擊選擇設定單元格格式...