高版本oracle无法使用wm_concat()函数的解决办法

本文介绍了Oracle数据库中的wm_concat函数用于将列转换为行的用途,特别是处理SYMPTOM_CODE列,将其格式化为res_3_、ner_0_、h_0_等。然而,wm_concat函数在Oracle 12g及以上版本中不可用。针对这一问题,文章提出了两种替代解决方案:1) 使用listagg函数结合withingroup子句按特定顺序聚合;2) 利用xmlagg和xmlparse函数进行字符串拼接。这两个方法都可以实现类似wm_concat的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	 关于使用 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值