【发布时间】:2022-07-30 22:38:59
【问题描述】:
当我像下面这样使用时,有 1 个 SQL 查询-
select * from
(select a.id, a.nm, b.pd, b.date, rank() over(partition by a.id order by b.date desc) rnk
from tab1 a, tab2 b where a.id = b.id)
where rnk =1
然后得到如下输出-
id nm pd date rnk
-- --- --- ---------- ---
11 abc a15 11/04/2022 1
11 abc a15 11/04/2022 1
14 gef a23 11/04/2022 1
14 gef a23 10/04/2022 12
19 lfb a37 11/04/2022 1
19 lfb a37 08/04/2022 21
但我只想选择一个值作为最晚日期的订单。您能否帮我解决这个问题,以便为 1 id 选择一个值,如下所示-
id nm pd date rnk
-- --- --- ---------- ---
11 abc a15 11/04/2022 1
14 gef a23 11/04/2022 1
19 lfb a37 11/04/2022 1
【问题讨论】:
-
对于具有最新日期的单行,尝试 row_number() over(....) 而不是 rank()...
-
@SOS 我也使用了 row_number() 但没有得到预期的输出。
-
实际结果如何,与您的预期有何不同?