我可以更新SQL set命令中的字段,然后在同一命令中使用新值吗?

时间:2017-03-27 02:19:23

标签: sql sql-server sql-update

我想设置一个值,然后在同一个SQL更新存储过程中引用那个新值,这会有用吗?

当我尝试时,似乎第二次更新直到第二次运行存储过程才更新(如果第一行更新不会使新值对第二个字段可见)

如果这不起作用,最好的选择是使用变量吗?

我有以下命令(简体):

    UPDATE [dbo].[AU Sales Inv Line] SET
    [_On Rent Date] = "REALLY COMPLICATED CALCULATION",
    [_New Revenue] = (CASE WHEN [_On Rent Date] = XXX THEN 'Yes' ELSE 'No' END)

提前致谢

1 个答案:

答案 0 :(得分:1)

执行所需操作的简单方法是可更新的CTE:

with toupdate as (
      select t.*,
             <really complicated calculation> as newval
      from [AU Sales Inv Line] t
     )
update toupdate
    set [_On Rent Date] = newval,
        [_New Revenue] = (CASE WHEN newval = XXX THEN 'Yes' ELSE 'No' END);