我正在尝试获取课程的最后注册日期,但我想知道thar记录的 id 。由于MAX是一个函数,我必须使用 id 分组,这是我不想要的,因为结果非常不同(从每个id只有一条记录到每条记录)。
管理这样的查询的方法是什么?:
SELECT id, MAX(registration_date) AS registration_date
FROM courses;
因为它会出错,我必须这样做才能避免它:
SELECT id, MAX(registration_date) AS registration_date
FROM courses
GROUP BY id;
我不想要最后一个的结果。
答案 0 :(得分:0)
您可以使用rank()
窗口函数:
SELECT id
FROM (SELECT id, RANK() OVER (ORDER BY registration_date DESC) AS rk
FROM courses)
WHERE rk = 1
答案 1 :(得分:0)
一种方法是使用这样的子查询:
select *
from [dbo].[Courses]
where registration_date =
(select max(registration_date)
from [dbo].[Courses])
但只有匹配的日期可能会返回多条记录。 如果可能,请在where子句中包含更多字段以缩小范围。