2016-09-16 37 views
1

我想運行此查詢:替代FIRST_VALUE

;WITH ToUpdate AS (
    SELECT Id1, Id2, 
      FIRST_VALUE(Id1) OVER (PARTITION BY Id2 ORDER BY Id1) AS newValue 
    FROM mytable 
) 
UPDATE ToUpdate 
SET Id2 = newValue 

但FIRST_VALUE不是在SQL Server 2008中,是否有其他選擇嗎?

回答

1

試試這個:使用OUTER APPLY

;WITH ToUpdate AS (
     SELECT Id1, Id2, 
     M.newValue AS newValue 
     FROM mytable t1 
     OUTER APPLY(
     SELECT top 1 t2.ID1 AS newValue 
     FROM mytable t2 WHERE t1.Id2=t2.Id2 
     ORDER BY t2.ID1 
    )M 
) 
UPDATE ToUpdate 
SET Id2 = newValue