
SELECT RTRIM(XMLAGG(XMLPARSE(CONTENT 字段a || ',' WELLFORMED))
GETCLOBVAL(), ',')
FROM 表;
我现在身边没有 数据库环境 这个是我以前写的SQL
你看一下,修改一下就可以了
Oracle分组查询用逗号分隔结果SQL语句
表一:
1 张三
2 李四
3 王五
。。。。
表二:
学号 选修课程
1 语文
1 数学
2 英语
2 语文
3 数学
3 英语
3 历史
。。。。。
要求查处结果
学好 姓名 选修课程所有课程名称以,隔开
1 张三 语文,数学
2 李四 英语,语文
3 王五 数学,英语,历史
;
create table a_lyh_test
as
select 1 as "学号" , '张三' as "姓名" from dual
union all
select 2 as "学号" , '李四' as "姓名" from dual
union all
select 3 as "学号" , '王五' as "姓名" from dual
;
create table b_lyh_test
as
select 1 as "学号" , '语文' as "选修课程" from dual
union all
select 1 as "学号" , '数学' as "选修课程" from dual
union all
select 2 as "学号" , '英语' as "选修课程" from dual
union all
select 2 as "学号" , '语文' as "选修课程" from dual
union all
select 3 as "学号" , '数学' as "选修课程" from dual
union all
select 3 as "学号" , '英语' as "选修课程" from dual
union all
select 3 as "学号" , '历史' as "选修课程" from dual
;
select f"学号"
,f"姓名"
,ltrim(max(sys_connect_by_path(f"选修课程",','))
keep (dense_rank last order by fpnum),',') as "选修课程"
from
(
select t"学号"
,t"姓名"
,t"选修课程"
,row_number() over(partition by t"学号" order by t"姓名") as pnum
,row_number() over(partition by t"学号" order by t"姓名")-1 as lnum
from
(
select a"学号",a"姓名",b"选修课程"
from a_lyh_test a
,b_lyh_test b
where a"学号" = b"学号"
) t
) f
group by f"学号",f"姓名"
connect by flnum = prior fpnum and f"学号" = prior f"学号"
start with fpnum = 1;
SELECT FROM
(SELECT
--tID,
tBigClass,
tNum,
tSmallClass,
t[Content],
tIsQuantization,
--tDeptId,
--tTargetValue,
--tMinValue,
--tStriveValue,
--tScore,
--tBelongToPeriod,
--tQuantizationType,
--tIndicatorSepDept,
--tF_CreateDate,
--t[Status]
dzir
,row=ROW_NUMBER() OVER(PARTITION BY tID ORDER BY dzirCreateTime desc)
FROM
DK_ZB_DeptIndicator AS t
RIGHT JOIN
DK_ZB_IndicatorReport AS dzir ON dzirIndicatorsID = tID) AS t WHERE trow = 1
DK_ZB_DeptIndicator 主表
DK_ZB_IndicatorReport 对应的多表
以上就是关于oracle sql多条数据合并成一条(数据量大,wmsys.wm_concat报错)全部的内容,包括:oracle sql多条数据合并成一条(数据量大,wmsys.wm_concat报错)、求助,oracle多行数据合并成一行、sqlserver 一对多查询将多条数据合并等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)