SQL Server在单行中使用大小写更新多列
我需要一个问题的帮助。我使用SQLServer2008 我有三张表(它们更简单,仅举个例子): 表中的简单数据:SQL Server在单行中使用大小写更新多列,sql,Sql,我需要一个问题的帮助。我使用SQLServer2008 我有三张表(它们更简单,仅举个例子): 表中的简单数据: insert into Goods values (1), (2), (3); insert into Comissions values (1, 15, 1, 2), (2, 10, 2, 2), (3, 5, 1, 3); insert into PriceComponents values (1, 100, 1, 0, 2, 0, 2), (2, 200, 1, 0, 2,
insert into Goods values (1), (2), (3);
insert into Comissions values (1, 15, 1, 2), (2, 10, 2, 2), (3, 5, 1, 3);
insert into PriceComponents values (1, 100, 1, 0, 2, 0, 2), (2, 200, 1, 0, 2, 0, 3);
我想用该查询更新PriceComponents
(列:commission1
和commission2
):
update dbo.PriceComponents
set comission1 = case when Comissions.svkey=svkey1 then dbo.Comissions.commission else comission1 end,
comission2 = case when Comissions.svkey=svkey2 then dbo.Comissions.commission else comission2 end
from dbo.PriceComponents
left outer join dbo.Goods on dbo.PriceComponents.to_key = dbo.Goods.to_key
left outer join dbo.Comissions on dbo.Goods.to_key = dbo.Comissions.to_key;
因此,在该查询之前,PriceComponents
看起来像:
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 0 2 0 2
2 200,00 1 0 2 0 3
及之后:
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 15 2 0 2
2 200,00 1 5 2 0 3
但我预计会有这样的结果:
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 15 2 10 2
2 200,00 1 5 2 0 3
我真的不明白我在哪里出错。你是
加入到上,但试图从委员会中的两个不同行中提取,其中只有一行匹配
to_键
值将仅与委员会
行中的一行匹配,这是第一个更新委员会1
的行Commission2
将永远不会匹配,因为同一数据行上的to_键
和svkey
值不正确。谢谢您的回答。但如果我使用相同的条件执行select查询:select*from dbo.PriceComponents left outer join dbo.Goods on dbo.PriceComponents.to_key=dbo.Goods.to_key left outer join dbo.commissions on dbo.Goods.to_key=dbo.commissions.to_key;我要三排。也许我错了,但我希望更新将使用这一行,对于PriceComponents中的一行,我将有两个更新。如果是这样的话。如何完成任务-更新PriceComponents中所有行中的所有佣金?您只有一行符合要求。为了满足要求,您可能需要对数据进行两次传递
id summ svkey1 comission1 svkey2 comission2 to_key
1 100,00 1 15 2 10 2
2 200,00 1 5 2 0 3