按其最大日期更新同一个表

时间:2013-12-20 12:43:17

标签: tsql sql-server-2012

我有一张桌子,我必须找到每个独特EMPid&的最大日期。 testid

下面是输入表和预期输出

enter image description here

我尝试使用相关子查询,但这不起作用。

以最大日期更新表格的任何快捷方式。

2 个答案:

答案 0 :(得分:3)

您可以使用common-table-expressionOVER 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