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