根据B列中的值更新A列

时间:2020-04-27 07:58:41

标签: sql-server join sql-update

假设我有Table1Table2,如下所示:

表1

Nmae  ColA ColB
---------------
Peter 25   
Jason 52   
Tom   74
Jim   65

表2

Values Prize
-------------
25     ABC
50     ABC1
75     ABC2
100    ABC3

现在,我想根据ColB中的值更新Table1中的ColA。 例如如果为value >= 25 and < 50,则为ABC。如果为value >= 50 and < 75,则为ABC1

所需的输出:

Name ColA ColB
----------------
Peter 25   ABC
Jason 52   ABC1
Tom   76   ABC2
Jim   65   ABC1

我试图通过连接两个表来更新ColB来解决此问题,但是卡住了。我知道可以使用CASE WHEN轻松完成此操作。但是,我担心如果规则更改或更改,我必须在多个SP中修改代码。

1 个答案:

答案 0 :(得分:0)

您可以使用子查询而不是CASE WHEN轻松地执行UPDATE

update table1 set ColB = (select top 1 Prize 
                          from table2 
                          where Values <= ColA order by Values desc)