oracle 系统管理员账号密码Oracle合并多行记录为一行实例分析

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=coracle账号.hm

 

结果:

 

 

 

摘自 wdh226的专栏

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。