我有以下数据
Date Week ID Tot_Seconds O_Seconds Week_ID
8/14/2011 12:00:00 AM 5823 22180 170043 26043 18
8/21/2011 12:00:00 AM 5824 22180 126471 0 18
我正在尝试更新另一个表中的列O_Seconds的值,其中周和ID匹配,但我只想更新每周的max(日期)。原因是,带有数据源的表具有按周的日期,我将每天更新的表是每天,并且使用我当前拥有的查询,它更新例如26043,用于id和周匹配的所有日子,扭曲我的未来查询我将对这些列的值求和。
有没有办法只更新最大日期?
答案 0 :(得分:4)
像这样的东西
派生表用于获取每周第1行/ ID
UPDATE
O
SET
SomeCol = S.O_Second
FROM
OtherTable O
JOIN
(
SELECT
Week, ID, O_Second,
ROW_NUMBER() OVER (PARTITION BY Week, ID ORDER BY Date DESC) AS rn
FROM
ThisTable
) S ON O.Week = S.Week AND O.ID = S.ID
WHERE
S.rn = 1
对于SQL Server 2000及更早版本,您需要一个聚合。见DBA.SE for more