Sql server SQL Server:更新列

Sql server SQL Server:更新列,sql-server,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 在以下情况下,我想用FAIL填充column=status: 对于相同的match01,存在不同的match02。预期表a: ID

我有一张桌子

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
在以下情况下,我想用FAIL填充column=status: 对于相同的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
请注意:如果对应的“match02”不同,则所有“match01”均失败。
感谢

基本上,这表示当列Match02的最大值和最小值不相等时,更新表A中的所有值,这意味着match01有多行具有不同的match 02值

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

基本上,这表示当列Match02的最大值和最小值不相等时,更新表A中的所有值,这意味着match01有多行具有不同的match 02值

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

当任何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
)

当任何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
)

你试过什么?什么不起作用?你到底有什么困难?我们不会为您完成工作,但会帮助您解决任何具体问题。请确保选择一个答案作为接受答案。这有助于其他有同样问题的人快速找到解决方案,感谢帮助过你的人也是礼貌之举。你尝试过什么?什么不起作用?你到底有什么困难?我们不会为您完成工作,但会帮助您解决任何具体问题。请确保选择一个答案作为接受答案。这有助于其他有同样问题的人快速找到解决方案,而且感谢帮助过你的人也是礼貌的做法。