关于使用 wm_concat() 函数的说明
作用: 列转行,把symptom_code转成 res_3_,nner_0,h_0_ 格式
ID SYMPTOM_NAME SYMPTOM_CODE KNOWLEDGE_ID CREATE_TIME
1 咳嗽 res_3_ 5db51a563bb842af8b1afcf097d13775 2019-08-13 15:22:55
2 头痛 ner_0_ 5db51a563bb842af8b1afcf097d13775 2019-08-13 15:22:55
3 胸闷 h_0_ 5db51a563bb842af8b1afcf097d13775 2019-08-13 15:22:55
4 腹泻 ali_5_ 5db51a563bb842af8b1afcf097d13775 2019-08-13 15:22:55
5 发热 b_0_ 73e27256dd8842d48942b1def7effb84 2019-08-13 15:24:21
6 咯血 res_1_ 73e27256dd8842d48942b1def7effb84 2019-08-13 15:24:21
7 抽搐 ner_16_ 73e27256dd8842d48942b1def7effb84 2019-08-13 15:24:21
8 胸闷 h_0_ 73e27256dd8842d48942b1def7effb84 2019-08-13 15:24:21
9 腹泻 ali_5_ 73e27256dd8842d48942b1def7effb84 2019-08-13 15:24:21
10 发热 b_0_ 5db51a563bb842af8b1afcf097d13775 2019-08-13 15:22:55
在12g以下的oracle版本中可用,高版本无法使用
解决方案:
1.自定义wm_concat()函数
2.listagg(字段,',') within group (order by 字段)
例子:
select knowledge_id,listagg(symptom_code,',') within group (order by knowledge_id) symptom_code from emergency_knowledge_symptom group by knowledge_id
3.rtrim((xmlagg(xmlparse(content t.字段名 ||',' wellformed) ORDER BY t.字段名).getclobval()),',')
例子:
select knowledge_id,rtrim((xmlagg(xmlparse(content symptom_code ||',' wellformed) ORDER BY symptom_code).getclobval()), ',') from emergency_knowledge_symptom group by knowledge_id