我有两个表;
表1
[SKU], [QTY_on_hand]
表2
[XREF] , [QTY_on_hand]
我想用表1的[QTY_on_hand]更新表2的[QTY_on_hand] 其中[SKU] = [XREF],并且如果Table1的[QTY_on_hand]大于“ 30”,则table2的[QTY_on_hand] ='0'。
所以T-SQL是:
update Table 2
set [QTY_on_hand] = t.[QTY_on_hand]
from Table 1 t
where t.[SKU] = [XREF]
但是if语句在这里丢失了,我无法设法将if语句与'case when'或'if-else'集成起来。
答案 0 :(得分:2)
以下是如何在更新语句中将第二个表联接到要更新的表,以及如何使用条件表达式来更新值:
update T2 set
qty_on_hand = case when T1.qty_on_hand > 30 then T1.qty_on_hand else 0 end
from Table2 T2
inner join Table1 T1 on T1.SKU = T2.XREF
where ?? -- surely you don't want to update the entire table?
答案 1 :(得分:0)
您是否尝试过这样的案例声明
UPDATE Table2
SET Qty_on_Hand = CASE WHEN SKU=XREF AND Qty_on_Hand > 30 THEN Table1.Qty_on_Hand ELSE Table2.Qty_on_Hand END