Oracle 合併多行記錄爲一行

1、實際需求情況如下:

  3941000.png

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




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



2、問題分析

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

3、解決方案

SQL:

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

SQL代碼:

createorreplaceviewview_ly_sjdxpt_jwcj as

select

xh hm,

kcmc||zscj as kc_cj

from dcuser.ly_xs_bzks_cjb b;

結果:

3941002.png


第二步再寫一個視圖,使用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;


結果:

3941003.png


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

SQL代碼:

select distinct

'教務成績' dxlb,

xh hm,

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

to_char(sysdate,'yyyyMMddHH24miss') crsj,

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

結果:

3941004.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章