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...