Oracle 合并多行记录为一行

1、实际需求情况如下:

  

Oracle 合并多行记录为一行

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

Oracle 合并多行记录为一行



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

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;

结果:

Oracle 合并多行记录为一行



第二步再写一个视图,使用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;

结果:

Oracle 合并多行记录为一行



第三步代入实际需要的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

结果:

Oracle 合并多行记录为一行



相关文章

这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中...
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小...
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识...