oracle数据库多行合并,Oracle 合并多行记录为一行

1、实际需求情况如下:

3941000.png

描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下:

3941001.png

描述:将这位同学的全部课程和成绩用一个字段表示,里面包括全部的课程名称和考试成绩

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值