数据库

 首页 > 数据库 > Oracle > Oracle合并多行记录为一行实例分析

Oracle合并多行记录为一行实例分析

分享到:
【字体:
导读:
         摘要:1、实际需求情况如下:描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下:www.2cto.com描述:将这位同学的全部课程和成绩用一个字段表示,里面包括... SyntaxHighlighter.all(); ...

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=c.hm
 
结果:

 
 
 
摘自 wdh226的专栏
Oracle合并多行记录为一行实例分析
分享到:
Oracle表空间的问题
Oracle表空间的问题 1、查询表空间使用情况    SELECT a.tablespace_name "表空间名",           total "表空间大小(MB)",           free "表空间剩余大小(MB)",           (total - free) "表空间使用大小(MB)",           ROUND((total - free) / total, 4) * 100 "使用率 %"      FROM (SEL...
ORACLE11G自动内存管理简析
ORACLE11G自动内存管理简析 ORACLE 11g 自动内存管理: 在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配。oracle推荐使用自动内存管理简化内存分配。   oracle 11g依然支持手工内存分配: 1:oracle 11g使用memory_target来支持内存自动分配。   2:使用sga_target和pga...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……