2014-10-31 199 views
1

我有这个表更新同一列基于另一列

Type Price 
A1  900 
A2  800 
A3  700 
A4  600 

我想执行一个更新查询,其中的A1,A3和A4的价格提高5% 为A2的价格必须增加了6,5%

我试图使用CaseIIF等等。但我无法弄清楚我怎么能把这个在一个查询中。

+0

为什么是 'A2' 的处理不同?如果你是硬编码,只需使用where子句。 'SET Price = price +(price * .05)其中'type <>'A2''等 – Andrew 2014-10-31 16:24:23

回答

3

像下面这样的东西应该工作。我

UPDATE <table> 
SET PRICE = IIF([TYPE] IN ("A1","A3", "A4"); [Price]*1,05; [Price]*1,065) 
+3

替换为“;”与“,”和“,”和“。”如果您不使用德语语言环境:'UPDATE

SET PRICE = IIF([TYPE] IN(“A1”,“A3”,“A4”),[Price] * 1.05,[Price] * 1.065)' – 2014-10-31 16:28:13

2

可以使用switch表达:

UPDATE my_table 
SET price = price * SWITCH (
          type IN ('A1', 'A3'), 1.05, 
          type = 'A4', 1.065) 
WHERE type IN ('A1', 'A3', 'A4')