如何使用SQL筛选以获取唯一记录

如何使用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

我有一张类似的桌子。如果有已确认的记录,我想选择最早的记录,如果没有,则选择最近的记录。在这种情况下,我希望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 (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!!我指的是最早的确认日期,如果可以的话。