Oracle合併多行記錄為一行例項分析

2022-04-04 01:03:57 字數 1130 閱讀 5272

1、實際需求情況如下:

描述:上述表中,某一位同學有多門課程和成績,現在希望有一條sql語句,將課程名稱和成績合併在一起顯示,如下:  www.2cto.com  

描述:將這位同學的全部課程和成績用乙個字段表示,裡面包括全部的課程名稱和考試成績

2、問題分析

解決這個問題可以採用建立function的辦法,去合併這2個字段,但這樣太麻煩,由於是採用的oracle10g,故可以採用函式wmsys.wm_concat()實現此功能。

3、解決方案

sql:

第一步先寫乙個檢視view_ly_sjdxpt_jwcj,合併這2個字段

sql**:

createorreplaceviewview_ly_sjdxpt_jwcj as

select  www.2cto.com  

xh hm,

kcmc||zscj as kc_cj

from dcuser.ly_xs_bzks_cjb b;

結果:第二步再寫乙個檢視,使用wmsys.wm_concat()將kc_cj欄位合併

sql**:

createorreplaceviewview_ly_sjdxpt_jwcj_kz as

select hm,wmsys.wm_concat(kc_cj) as kccj from view_ly_sjdxpt_jwcj groupby hm;

結果:第三步代入實際需要的sql中使用即可:

sql**:

selectdistinct

'教務成績' dxlb,

xh hm,

(select lxdh fromdcuser.ly_xs_bzks_xsjbxx where xh=b.xh) sjhm,

to_char(sysdate,'yyyymmddhh24miss') crsj,  www.2cto.com  

xm||'同學您好,這個學期您各科成績如下:'||c.kccj as nr,

'' bz,

''fssj

fromdcuser.ly_xs_bzks_cjb b

leftouterjoin dcuser_kz.view_ly_sjdxpt_jwcj_kz c on b.xh=c.hm

結果:摘自 wdh226的專欄

oracle多行記錄合併成一行。

需要做個報表,把多行記錄,合併成一行。簡單記錄下。注 以下內容為虛構資料,可能會出現不太對的現象,邏輯上是對的。現實中的比這複雜。原始表 部門人數 銷售30 售後20行政8 轉成 銷售8人,售後20人,行政8人。考慮到資料庫版本的問題,目前用的是oracle 11g,12g的時候不再有wmsys.w...

Oracle 多行合併一行 方法

引用自 ote 特別宣告一下內容 網路 假如有如下表,其中各個i值對應的行數是不定的 sql sql select from t i a d 1 b 2008 03 27 10 55 42 1 a 2008 03 27 10 55 46 1 d 2008 03 27 10 55 30 2 z 200...

oracle多行合併成一行

在mysql有關鍵字group concat提供了類似的功能,在oracle中類似功能關鍵字是wm concat.比如我有如下查詢資料 但是我希望能夠顯示成一行查詢出來,結果圖如下 關鍵sql 形如 select t.sglcheckid,wm concat t.salemodulename fro...