SQL Server - 基于另一个列值更新列

时间:2013-09-02 16:56:43

标签: sql-server-2008 sql-update insert-update

如何更新另一个表TableA中找到的Table B值列,具体取决于Type

中的另一列TableA

E.g。

表A

Location Type Value
  USA    Dog   20
  UK     Cat   30

表B

Dog   Cat Rabbit
 50   70    100

逻辑:

  • 如果tableA.Value = Dog则更新TableA.Value = TableB.Dog
  • 如果tableA.Value = Cat则更新TableA.Value = TableB.Cat
  • 如果tableA.Value = Rabbit则更新TableA.Value = TableB.Rabbit

注意:只有3个选项,所以硬编码就可以了。

结果

表A

Location Type  Value
USA      Dog   50
UK       Cat   70

1 个答案:

答案 0 :(得分:6)

这样的东西
UPDATE TableA
SET Value = 
CASE Type
  WHEN 'DOG' then B.Dog
  WHEN 'CAT' then B.Cat
  WHEN 'RABBIT' then B.Rabbit
  ELSE Value
END
FROM TableB b

SQL Fiddle DEMO