db2中的动态枢轴

时间:2018-11-29 06:51:06

标签: sql db2 db2-luw string-aggregation listagg

因此,当您将行转换为列时,我们在Oracle / SQL Server中具有PIVOT关键字。 不是在DB2中,我想动态地将行结果转换并连接到列中,因为我不知道我可能得到的行数,它们可能会有所不同。 例如 表x

COL1  COL2
ABC  10
ABC  20
ABC  30

我想显示为

COL1  COL2
ABC   10,20,30

但是记录的数量可能会有所不同,因此我无法使用大小写。

想要对许多表的查询而不是特定查询执行此操作;一个功能,或者最好是在选择查询本身中。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Db2 LUW 11.1.4.4版本,则可以使用sysibm.json_array function来解决:

VALUES JSON_ARRAY(SELECT DEPTNO FROM DEPT);

1
-------------------------------
["F22","G22","H22","I22","J22"]

然后您可以将json_array存储在基于字符的列varcharclob中。

答案 1 :(得分:0)

用于更长的字符串。

select substr(xmlserialize(
xmlquery('$L/text()' passing XMLAGG(xmlelement(name "a", ','||colname)) as "L")
as clob(1m)
), 2)
from syscat.columns;