2011-09-19 5 views
0

I가 다음 데이터업데이트 행 경우에만 최대 날짜

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

뭔가 SQL 서버 2000 주/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 행을 가져 오는 데 사용됩니다 및 이전 버전 당신은 집계가 필요합니다. DBA.SE for more

+0

이것은 내 쿼리와 동일한 결과를 제공합니다. 이는 내 쿼리를 업데이트하는 것이며, 이는 최대 일뿐만 아니라 모든 일을 업데이트합니다. – Jessica

+2

@JP : 파생 테이블을 별도로 실행하면 주당 최대 날짜/ID에 대해 rn = 1이 표시됩니다. 즉, O_Second = 26043 인 행만 추출합니다. 이제, "OtherTable"의 모든 행을 업데이트하면 Week/ID *가 행을 식별하는 데 충분하지 않습니다. 이것은 * 당신이 우리에게 준 것에 근거하여 작동합니다 *. 더 많은 데이터 및 테이블 구조 추가하기 – gbn