Oracle 合并多行记录为一行
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,1、实际需求情况如下:描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下:描述:将这位同学的全部课程和成绩用一个字段表示,里面包括全部的课程名称
千家信息网最后更新 2025年11月13日Oracle 合并多行记录为一行
1、实际需求情况如下:
描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下:
描述:将这位同学的全部课程和成绩用一个字段表示,里面包括全部的课程名称和考试成绩
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;
结果:
第二步再写一个视图,使用wmsys.wm_concat()将KC_CJ字段合并
SQL代码:
createorreplaceviewview_ly_sjdxpt_jwcj_kz asselect hm,wmsys.wm_concat(kc_cj) as kccj from view_ly_sjdxpt_jwcj groupby hm;
结果:
第三步代入实际需要的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
结果:
成绩
字段
课程
代码
同学
结果
名称
实际
视图
问题
您好
函数
办法
功能
学期
情况
教务
方案
解决方案
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发核心人员流失
施工项目管理软件开发报价
软件开发的生命周期方法
聊天服务器开发
服务器报错1301
上海大学数据库考试大纲
苏黎世网络安全险
司单位如何网络安全备案
达梦数据库系统处于状态切换中
河北博之昊网络技术有限公司官网
网络安全利与弊表格
光猫上的服务器地址
昭通服务器显卡费用
面向抑郁症患者的软件开发
it软件开发年终总结报告
软件开发项目投资意向书
儿童网络安全知识
固原手机软件开发
甘肃创新网络技术服务代理品牌
软件开发兼职讲师
mysql数据库 修改
山西大同网络安全职业技术大赛
外文学位论文数据库
惠州戴尔服务器诚信合作
网络安全问题防范措施
北京麻将软件开发优选企业
邮件服务器防护
软件开发为什么会转业
网络技术开发费用
昆明网络安全周