如何使用SQL筛选以获取唯一记录
我有一张类似的桌子。如果有已确认的记录,我想选择最早的记录,如果没有,则选择最近的记录。在这种情况下,我希望4_记录 身份证件 记录 类型 日期 1_A 1. 汽车 4/7/2021 2_A 1. 证实 4/1/2021 3_A 1. 建议 4/5/2021 4_A 1. 证实 4/2/2021 5_A 1. 建议 4/5/2021如何使用SQL筛选以获取唯一记录,sql,snowflake-cloud-data-platform,Sql,Snowflake Cloud Data Platform,我有一张类似的桌子。如果有已确认的记录,我想选择最早的记录,如果没有,则选择最近的记录。在这种情况下,我希望4_记录 身份证件 记录 类型 日期 1_A 1. 汽车 4/7/2021 2_A 1. 证实 4/1/2021 3_A 1. 建议 4/5/2021 4_A 1. 证实 4/2/2021 5_A 1. 建议 4/5/2021 假设您指的是最早的确认日期,如果存在以下情况: SELECT * FROM TABLE WHERE QUALIFY ROW_NUMBER() OVER (PART
假设您指的是最早的确认日期,如果存在以下情况:
SELECT *
FROM TABLE
WHERE QUALIFY ROW_NUMBER() OVER (PARTITION BY RECORD
ORDER BY (CASE WHEN Type = 'Confirmed' THEN 1 ELSE 2 END),
(CASE WHEN Type = 'Confirmed' THEN DATE END) ASC,
DATE ASC
) = 1;
如果您的意思是最早的日期,如果有确认日期,则:
SELECT *
FROM TABLE
QUALIFY (CASE WHEN COUNT_IF( Type = 'Confirmed') OVER (PARTITION BY RECORD)
THEN ROW_NUMBER() OVER (PARTITION BY RECORD ORDER BY DATE)
THEN ROW_NUMBER() OVER (PARTITION BY RECORD ORDER BY DATE DESC)
END) = 1;
谢谢你@Gordon!!我指的是最早的确认日期,如果可以的话。