SQL - 使用 NULL 或 MAX 连接 2 个表
SQL - JOIN 2 tables with either NULL OR MAX
我在 Teradata 中有两个表需要 LEFT JOIN。
第一个包括客户,第二个包括他们的详细信息和有效期结束日期。 NULL代表当前有效。
表 1
client_id
1
2
表 2
client_id
valid_end
1
31.12.2021
1
31.12.2022
2
31.12.2020
2
null
我需要使用表 2 中每个客户的最新记录左连接这两个表。
如果当前有效的记录为 NULL,则使用它。如果没有任何 NULL 记录,则使用最高日期。
结果
client_id
valid_end
1
31.12.2022
2
null
使用 QUALIFY 和 MAX 进行了多次尝试,但从未达到要求的结果。谢谢指教。
使用ROW_NUMBER代替MAX,NULLS FIRST在最高日期之前对NULL进行排序:
qualify
row_number()
over (partition by client_id
order by valid_end desc NULLS FIRST) = 1
我在 Teradata 中有两个表需要 LEFT JOIN。 第一个包括客户,第二个包括他们的详细信息和有效期结束日期。 NULL代表当前有效。
表 1
client_id |
---|
1 |
2 |
表 2
client_id | valid_end |
---|---|
1 | 31.12.2021 |
1 | 31.12.2022 |
2 | 31.12.2020 |
2 | null |
我需要使用表 2 中每个客户的最新记录左连接这两个表。 如果当前有效的记录为 NULL,则使用它。如果没有任何 NULL 记录,则使用最高日期。
结果
client_id | valid_end |
---|---|
1 | 31.12.2022 |
2 | null |
使用 QUALIFY 和 MAX 进行了多次尝试,但从未达到要求的结果。谢谢指教。
使用ROW_NUMBER代替MAX,NULLS FIRST在最高日期之前对NULL进行排序:
qualify
row_number()
over (partition by client_id
order by valid_end desc NULLS FIRST) = 1