繁体   English   中英

我需要帮助才能使用 LISTAGG 功能

[英]I would require assistance in using LISTAGG function

SELECT pid
       ,LISTAGG(DISTINCT acc_no, ',') WITHIN GROUP(ORDER BY acc_no) 
        AS acc_no_txt
FROM
(SELECT pid
      ,CASE WHEN acc_no_v01 IN ('not found','blank','nil-value','',' ','null') THEN 'Acc Nbr Not Enterered'
       ELSE acc_no_v01
       END
       AS acc_no
      ,MIN(TRY_TO_NUMBER(T2.vp_no)) AS vp_no
FROM table_1 T1
JOIN table_2 T2
ON T2.click_stream_integration_id = T1.click_stream_integration_id
WHERE T2.date = '2022-01-01'
AND pid='123456789'
GROUP BY pid,acc_no_v01
ORDER BY TRY_TO_NUMBER(vp_no)
)
GROUP BY pid;

当我运行上述查询时,我得到如下所述的结果:

PID                          ACC_NO_TXT

123456789              12244059141,Acc Nbr Not Enterered

我想显示如下所示的结果:

PID                          ACC_NO_TXT

123456789              12244059141

我不想显示 - Acc Nbr Not Enterered

谁能帮我实现这一目标?

谢谢!

我不知道他为什么不将其发布为答案,但您可以按照 Dean Flinter 所说的去做:

SELECT pid
       ,LISTAGG(DISTINCT acc_no, ',') WITHIN GROUP(ORDER BY acc_no) 
        AS acc_no_txt
FROM
(SELECT pid
      ,CASE WHEN acc_no_v01 IN ('not found','blank','nil-value','',' ','null') THEN NULL
       ELSE acc_no_v01
       END
       AS acc_no
      ,MIN(TRY_TO_NUMBER(T2.vp_no)) AS vp_no
FROM table_1 T1
JOIN table_2 T2
ON T2.click_stream_integration_id = T1.click_stream_integration_id
WHERE T2.date = '2022-01-01'
AND pid='123456789'
GROUP BY pid,acc_no_v01
ORDER BY TRY_TO_NUMBER(vp_no)
)
GROUP BY pid;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM