2011-09-19 82 views
0

,我有以下數據更新行僅在最大日期

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匹配的價值,但我只想更新每個星期的最大(日期)。原因是,包含數據源的表格每週都有日期,我將每天更新表格,並且使用我當前擁有的查詢,例如,在id和周匹配的所有日期,它會更新例如26043,歪曲我的未來查詢我將在哪裏總結這些列的值。

有沒有辦法更新最大日期?

回答

3

像這樣的事情

派生表是用來獲取每週/ 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 

第1行對於SQL Server 2000和更早的版本,你需要的總和。請參閱DBA.SE for more

+0

這給了我與我的查詢相同的結果,即它正在更新所有日子,而不僅僅是最大值。 – Jessica

+2

@JP:分別運行派生表,你會看到每月最大日期/ ID的rn = 1。也就是說,它只會提取O_Second = 26043的行。現在,爲了更新「OtherTable」中的所有行,意味着Week/ID *不足以識別行。這*確實*基於你給我們的工作。請添加更多數據和表格結構 – gbn