Oracle 合并多行记录为一行

一、实际需求状况以下:sql

  3941000.png

描述:上述表中,某一位同窗有多门课程和成绩,如今但愿有一条SQL语句,将课程名称和成绩合并在一块儿显示,以下:ide




描述:将这位同窗的所有课程和成绩用一个字段表示,里面包括所有的课程名称和考试成绩函数



二、问题分析spa

解决这个问题能够采用建立function的办法,去合并这2个字段,但这样太麻烦,因为是采用的Oracle10g,故能够采用函数wmsys.wm_concat()实现此功能。orm

三、解决方案get

SQL:it

第一步先写一个视图view_ly_sjdxpt_jwcj,合并这2个字段io

SQL代码:function

createorreplaceviewview_ly_sjdxpt_jwcj asclass

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

相关文章
相关标签/搜索