微博:https://weibo.com/6274976536/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1
SQL:
wm_concat 方法:
SELECT t.fterms4id,t.ftype,replace(MAX(FNAME),' ,',chr(10)) AS FNAME FROM (SELECT t.fterms4id,t.ftype,
wm_concat(t.fname||' ') OVER(PARTITION BY t.fterms4id,t.ftype ORDER BY t.fxh) FNAMEfrom T_EVALUATE_TERM4_PSFF t ) t
GROUP BY t.fterms4id,t.ftype
解析:
1. wm_concat(t.fname||' ') OVER(PARTITION BY t.fterms4id,t.ftype ORDER BY t.fxh)
wm_concat 函数, 实现拼接要合并行的字符串
(t.fname||' ') 由于wm_concat函数,默认拼接时使用‘,’分隔符,此处实现分隔符‘,’后面添加空格,以便稍后替换掉分隔符‘,’时使用
OVER 为wm_concat函数添加条件
PARTITION BY 相当于分组函数 group by
ORDER BY 即为排序
2. replace(MAX(FNAME),' ,',chr(10)) 此处为实现拼接后操作
MAX(FNAME) 取出拼接最完成的数据
chr(10) 为换行符
replace 即实现将分隔符‘,’和之前拼接的空格 替换为 换行符
within group 方法:
SELECT fhospitalid, listagg(fgroupid, ',') within group(ORDER BY fhospitalid) AS fgroupid
FROM t_drgs_hospital_group_ref t
GROUP BY fhospitalid