【发布时间】:2019-05-01 04:21:33
【问题描述】:
所以当您将行转换为列时,我们在 Oracle /SQL Server 中有 PIVOT 关键字。 不在 DB2 中,我想动态地转换行结果并将它们连接成一列,例如,我不知道我可能得到的行数,它们可能会有所不同。 例如 表x
COL1 COL2
ABC 10
ABC 20
ABC 30
我想把它显示为
COL1 COL2
ABC 10,20,30
但是记录的数量可能会有所不同,所以我不能使用案例。
想要对许多表的查询而不是特定查询执行此操作;一个函数,或者最好是在选择查询本身中。
【问题讨论】:
-
究竟是哪个 DB2“品牌”?卢威? i系列? Z/操作系统? DB2 LUW 支持 listagg():stackoverflow.com/questions/7188542
-
嗨,是的 db2 LUW。是的,我确实使用了 LISTAGG() 并且它可以工作,但是在连接之后,经过一定的限制,它会给我带来大小错误。有什么解决方法吗?使用 CAST 是一个选项,例如: LISTAGG(CAST(
AS VARGRAPHIC(10000)), ', ') 但它仍然保留固定长度。 -
LISTAGG 被限制为最大 VARCHAR 长度,即 32000 字节左右
-
感谢您的回复。我明白了,无论如何这可以是动态的,因为我必须保留 32000,如果字符串增加 32000 怎么办?有什么解决方法的想法吗?
标签: sql db2 db2-luw string-aggregation listagg