LISTAGG WITHIN GROUP函数使用方法

oracle中将多行共同的合并成一条记录,不同的合并后字符串拼接

select 
t1.kcbh 课程编码,
	t1.kcmc 课程名称 ,
LISTAGG( t1.JZGMC, ', ') WITHIN GROUP (ORDER BY t1.RKLSBM) AS 教职工信息 
from 
(
SELECT DISTINCT
	a.JZGMC,
	cct.kcbh 课程编码,
	cct.kcmc 课程名称 
	-- LISTAGG(a.RKLSBM || ' - ' || a.JZGMC, ', ') WITHIN GROUP (ORDER BY a.RKLSBM) AS 教职工信息
	
FROM
	CB_CBSJ_TJYXJXCB cct
	LEFT JOIN CB_JCXX_XLCC cjx ON cct.XLCC = cjx.XLCCBM 
	AND cct.KJND = cjx.KJND 
	AND cct.KJQJ = cjx.KJQJ
	LEFT JOIN (
	SELECT
		cjk.KJND,
		cjk.KJQJ,
		cjk.KCBM,
		cjk.RKLSBM,
		cjj.SSXYBM,
		cjj.JZGMC 
	FROM
		CB_JCXX_KCRJXX cjk
		LEFT JOIN CB_JCXX_JZG cjj ON cjk.RKLSBM = cjj.JZGBM 
		AND cjk.KJND = cjj.KJND 
		AND cjk.KJQJ = cjj.KJQJ 
	) a ON cct.kcbm = a.KCBM 
	AND cct.KJND = a.KJND 
	AND cct.KJQJ = a.KJQJ 
WHERE
	cct.kjnd = 2021 
	AND cct.kjqj = 1 
	AND cct.lx = 2 
	AND cct.kcbh = '15' 
GROUP BY
	a.JZGMC,
	cct.kcbh,
	cct.kcmc;
) t1
GROUP BY t1.kcbh,t1.kcmc;
posted @ 2024-03-08 15:01  这都没什么  阅读(227)  评论(0)    收藏  举报