查询以更新包含MS SQL 2008中的最大列值的行

时间:2014-04-02 15:47:26

标签: sql sql-server sql-server-2008 sql-update

我有一张类似于下面的表格:

C1   C2  C3
A     5   0
A    15   0
A     2   0
B     5   0
B     8   0

结果表通过C1

更新C3为C2组的mac值为1
C1   C2  C3
A     5   0
A    15   1
A     2   0
B     5   0
B     8   1

2 个答案:

答案 0 :(得分:0)

对于SQL Server 2005 +:

;WITH CTE AS
(
    SELECT  *,
            MAX(C2) OVER(PARTITION BY C1) MaxC2
    FROM YourTable
)
UPDATE CTE 
SET C3 = CASE WHEN MaxC2 = C2 THEN 1 ELSE 0 END

答案 1 :(得分:0)

Supossing表名为table_name

UPDATE t1 SET t1.C3 = 1
FROM table_name as t1 INNER JOIN (
  SELECT C1, MAX(C2) AS C2 FROM table_name GROUP BY C1
) AS t2 ON t1.C1 = t2.C1 AND t1.C2 = t2.C2
相关问题