站长网 MsSql教程 sql – db2中的Listagg替代方案

sql – db2中的Listagg替代方案

我的客户正在使用没有listagg函数的db2数据库,但我需要以某种方式在一个字段内聚合主键信息. 现在(对于Oracle)我使用它作为更大查询的一部分: SELECT LISTAGG(COLUMN_NAME || ‘:’ || CONTENT,’,’) WITHIN GROUP (ORDER BY COLUMN_NAME || ‘:’ || CONTENT)

我的客户正在使用没有listagg函数的db2数据库,但我需要以某种方式在一个字段内聚合主键信息.

现在(对于Oracle)我使用它作为更大查询的一部分:

SELECT LISTAGG(COLUMN_NAME || ':' || CONTENT,',') 
WITHIN GROUP (ORDER BY COLUMN_NAME || ':' || CONTENT) 
FROM TABLE
WHERE ROW_IDENTIFIER_ID = I.REC_ID AND I.TABLE_RESULT_ID = T.REC_ID

在DB2版本9.7修订包41之前,有另一种方法可以在db2数据库中获取listagg函数的结果吗?

我客户数据库的版本:
Linux – 企业服务器版9.7,版本号08060107
我通过执行这些选择得到它:

SELECT * FROM TABLE(SYSPROC.ENV_GET_INST_INFO()) AS SYSTEMINFO;
SELECT * FROM TABLE(SYSPROC.ENV_GET_PROD_INFO()) AS SYSTEMINFO;
SELECT * FROM TABLE(SYSPROC.ENV_GET_SYS_INFO()) AS SYSTEMINFO;

我承认我不明白,怎么可能是9.7,但是没有listagg功能?! :困惑:

我也做过了:

SELECT * FROM SYSCAT.FUNCTIONS

我回到了这个function list,但是在答案中没有替代解决方案中提到的xmltext或xmlgroup等功能:(.
客户使用什么尼安德特人数据库?或者我错过了什么?

谢谢你的回复.

解决方法

如果您的DB2版本支持pureXML(至少是DB2 for LUW 9.1,我相信DB2 9 for z / OS),除了上面提到的@ PM77-1之外,您还可以使用XMLAGG函数:

select xmlserialize(
  xmlagg(
    xmlconcat(
      xmltext(column_name),xmltext(':'),xmltext(content),xmltext(',')
    )
  ) as varchar(10000)
) 
from 
  yourtable 
...

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/jc/mssql/2021/0524/5719.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部