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

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

1樓:匿名使用者

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

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)結果

2樓:

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;行轉列就是這樣,列舉值有多少寫多少

3樓:

用group by 分組吧

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

4樓:匿名使用者

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

注意資料庫的限制長度

5樓:匿名使用者

我現在身邊沒有 資料庫環境 這個是我以前寫的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;

6樓:匿名使用者

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

from table_name

group by id;

7樓:匿名使用者

select wm_concat(name) from test

8樓:匿名使用者

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

oracle資料庫中有多行相同資料,只留一行怎麼實現?

9樓:匿名使用者

delete from emp e where e.rowid > (select min(x.rowid)

from emp x where x.emp_no = e.emp_no);

10樓:匿名使用者

distinct 函式查詢出來 插入另一張表 最簡單了

11樓:

select distinct col1,col2,col3 from table

12樓:匿名使用者

distinct 關鍵字幫你解決這個問題。

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

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

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

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

sql資料庫和oracle資料庫哪個好

兄弟,聽我的。肯定學習oracle。原因 1 oracle是商用的最廣泛的關係型資料庫管理系統,廣泛應用於銀行 電信 電力 社保等各個領域。特別是對於unix和linux平臺,sqlserver怎麼用啊?我想你學習,肯定為了將來應用,或者工作,你的簡歷裡面寫oracle和sqlserver完全是不一...