【发布时间】:2021-10-25 07:08:23
【问题描述】:
我有一个看起来像这样的表:
+--------+------+------------+
| ITEMNO | UNIT | CONVERSION |
+--------+------+------------+
| 123 | CTN | 50 |
+--------+------+------------+
| 456 | CTN | 300 |
+--------+------+------------+
| 789 | CTN | 200 |
+--------+------+------------+
我想要的是有一个查询
A) 添加相同的 ITEMNO,其“UNIT”为“CT”,且 CONVERSION 与“CTN”相同
B) 如果 ITEMNO 已经有一个“CT”的“UNIT”,则使用与“CTN”相同的 CONVERSION 更新它
除了这两个“单位”之外,还有这些是我唯一需要玩的。
尝试将此作为更新,但没有奏效:(
update ICUNIT
set ICUNIT.CONVERSION = (
select CONVERSION from ICUNIT
where UNIT = 'CTN')
from ICUNIT
where UNIT = 'CT'
希望有人能帮忙!!
【问题讨论】:
-
请不要添加问题的答案。在您决定
MERGE之前,请完整阅读this article 和this article - 我描述了一个更好的UPSERT模式here。如果您要使用MERGE,请始终在目标上使用HOLDLOCK。
标签: sql-server-2014