2011-09-12 83 views
0

我有一個表A的SQL Server:更新列

ID MatCh01 Match02 Status 
1 1001 12  
2 1001 12 
3 1001 12 
4 1002 44 
5 1002 47 
6 1003 22 
7 1003 22 
8 1004 55 
9 1004 57 

我想填充柱=狀態爲 「失敗」 時: 對於同一match01,存在不同match02。預計表A:

ID MatCh01 Match02 Status 
1 1001 12  NULL 
2 1001 12  NULL 
3 1001 12  NULL 
4 1002 44  FAIL 
5 1002 47  FAIL 
6 1003 22  NULL 
7 1003 22  NULL 
8 1004 55  FAIL 
9 1004 57  FAIL 

請注意:所有失敗 'match01' 如果相應的 'match02' 是不同的。 謝謝

+3

你試過了什麼?什麼沒有用?你到底有什麼困難?我們不會爲你做你的工作,但會幫助解決任何具體問題。 – Oded

+1

請務必選擇一個答案作爲「已接受」的答案。它可以幫助有相同問題的人快速找出解決方案,同時也很有禮貌地感謝幫助你的人。 –

回答

3

基本上這就是說,當列Match02的最大值和最小值不相等時(意思是match01具有多個具有用於匹配02的不同值的行),更新表A中的所有值。

UPDATE A 
SET Status = 'FAIL' 
FROM TableA A 
INNER JOIN (SELECT 
       a2.Match01 
      FROM TableA A2 
      GROUP BY a2.Match01 
      HAVING MAX(Match02) <> MIN(Match02)) B ON 
    A.Match01 = B.Match01 
1

當任何match01有多個不同的match02值時,用相同的match01更新這些行。

UPDATE t1 
SET Status = 'FAIL' 
FROM TableA t1 
WHERE t1.Match01 in 
(
    SELECT t2.Match01 
    FROM TableA t2 
    GROUP BY t2.Match01 
    HAVING COUNT(DISTINCT t2.Match02) > 1 
)