您可以在 DB2 SQL 中订购 listagg 返回值吗?
Posted
技术标签:
【中文标题】您可以在 DB2 SQL 中订购 listagg 返回值吗?【英文标题】:Can you order the listagg return value in DB2 SQL? 【发布时间】:2020-05-05 05:40:52 【问题描述】:我希望对 listagg 返回值进行排序,如下所示:
name@email.com | 200000#500000#
Not:
name@email.com | 500000#200000#
下面是一些示例代码。
我注意到如果我把 ('200000', 'name@email.com') 行放在第一位,它会做我想做的事,但我不能在 CTE 中订购所以我有点迷失了如何获得相同的结果。
WITH TAB (client, email) AS
(
VALUES
('500000', 'name@email.com'),
('200000', 'name@email.com')
)
SELECT email, listagg(trim(client) || '#', '')
FROM TAB a
GROUP BY email;
【问题讨论】:
【参考方案1】:使用within group
尝试以下操作
WITH TAB (client, email) AS
(
VALUES
('500000', 'name@email.com'),
('200000', 'name@email.com')
)
SELECT email, listagg(trim(client) || '#', '') within group (ORDER BY client)
FROM TAB a
GROUP BY email;
【讨论】:
以上是关于您可以在 DB2 SQL 中订购 listagg 返回值吗?的主要内容,如果未能解决你的问题,请参考以下文章