Oracle 合并多行记录为一行
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1、实际需求情况如下:描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下:描述:将这位同学的全部课程和成绩用一个字段表示,里面包括全部的课程名称
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
江苏根荣互联网科技
北京路客互联网科技有限公司
互联网 卓越科技
互联网与未来科技
互联网科技排名
互联网科技汛
哈尔滨新华互联网科技
新华互联网科技2019
银川新华互联网科技职业技术培训学校图片
电子科技大学互联网创业大赛
上海京穆互联网科技有限公司
互联网科技数字货币
互联网相关科技技术
互联网科技包装股份有限公司上市
广州有谷有贝互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
互联网科技手机排行榜
黑龙江互联网科技公司
互联网科技创业计划的风险分析
瑞安市蟠桃会互联网科技有限公司
恒银科技与互联网金融
承德科技产业互联网发展
湖南诚度互联网科技有限公司
未来五年的互联网科技
恒生互联网科技指数跳水
亳州好赞互联网科技有限公司
朱啸虎曾投资哪些互联网科技企业
互联网科技资金流入
版纳互联网科技选哪家
众联互联网络科技