【问题标题】:Can you order the listagg return value in DB2 SQL?您可以在 DB2 SQL 中订购 listagg 返回值吗?
【发布时间】: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;

【问题讨论】:

    标签: sql db2 db2-400


    【解决方案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; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多