[英]Need help in using LISTAGG function with DISTINCT
Select ID,
LISTAGG(DISTINCT VIEW_NM, ',') WITHIN GROUP(ORDER BY CAST(VISIT_PAGE_NBR as INT))
AS No_Of_Views
FROM db_name.schema_name.tbl_name
WHERE FLG_COLUMN = '0'
AND SOURCE_CD NOT IN ('1','2','3','4')
AND DATE_CR = '2022-01-01'
GROUP BY ID;
I want the VIEW_NM column values to be displayed either in ASC or DESC order.我希望以 ASC 或 DESC 顺序显示 VIEW_NM 列值。 But when I do a DISTINCT VIEW_NM, I'm getting - It is not a valid ORDER BY expression.
但是当我做一个 DISTINCT VIEW_NM 时,我得到 - 它不是一个有效的 ORDER BY 表达式。 Need help in fixing this.
需要帮助来解决这个问题。
Also, I don't want the values of VIEW_NM column to be duplicated.另外,我不希望 VIEW_NM 列的值被复制。 Pls suggest how this can be done..
请建议如何做到这一点..
Using cte to filter out multiple VIEW_NM per ID(choosing the one with lowest VIST_PAGE_NBR):使用 cte 过滤出每个 ID 的多个 VIEW_NM(选择具有最低 VIST_PAGE_NBR 的一个):
WITH cte AS (
SELECT ID, VIEW_NM, VISIT_PAGE_NBR::INT AS VISIT_PAGE_NBR
FROM db_name.schema_name.tbl_name
WHERE FLG_COLUMN = '0'
AND SOURCE_CD NOT IN ('1','2','3','4')
AND DATE_CR = '2022-01-01'
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID,VIEW_NM ORDER BY VISIT_PAGE_NBR) = 1
)
SELECT ID,
LISTAGG(VIEW_VM, ',') WITHIN GROUP(ORDER BY VISIT_PAGE_NBR) AS No_Of_Views
FROM cte
GROUP BY ID;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.