我有一张桌子,我必须找到每个独特EMPid&的最大日期。 testid
下面是输入表和预期输出
我尝试使用相关子查询,但这不起作用。
以最大日期更新表格的任何快捷方式。
答案 0 :(得分:3)
您可以使用common-table-expression和OVER
clause PARTITION BY
:
WITH CTE AS
(
SELECT EmpId, [Hall Id], testId, Date, [Max date],
MaxDate = MAX(Date) OVER (PARTITION BY EmpId, testId)
FROM dbo.TableName
)
UPDATE CTE SET [Max date] = MaxDate
如果您想了解会发生什么,请将UPDATE
替换为SELECT * FROM
。
答案 1 :(得分:1)
您可以使用CTE选择所有最大日期,并将其与原始数据连接,如下所示:
WITH MaxDates AS (
SELECT empid
, testid
, MAX(Date) AS MaxDate
FROM table
GROUP BY empid
, testid
)
SELECT table.*
, MaxDate
FROM table
INNER JOIN MaxDates ON table.empid = MaxDates.empid AND table.testid = MaxDates.testid