因此,当您将行转换为列时,我们在Oracle / SQL Server中具有PIVOT关键字。 不是在DB2中,我想动态地将行结果转换并连接到列中,因为我不知道我可能得到的行数,它们可能会有所不同。 例如 表x
COL1 COL2
ABC 10
ABC 20
ABC 30
我想显示为
COL1 COL2
ABC 10,20,30
但是记录的数量可能会有所不同,因此我无法使用大小写。
想要对许多表的查询而不是特定查询执行此操作;一个功能,或者最好是在选择查询本身中。
答案 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存储在基于字符的列varchar
,clob
中。
答案 1 :(得分:0)
用于更长的字符串。
select substr(xmlserialize(
xmlquery('$L/text()' passing XMLAGG(xmlelement(name "a", ','||colname)) as "L")
as clob(1m)
), 2)
from syscat.columns;