我的CTE如下:
;with cte as (field1, field2, field3)
我需要从此CTE中选择记录,但是在我需要对该CTE中的列之一进行一些更新之前,该更新基于标量函数的输出(它将返回1或0作为输出。 (位)),我在下面的案例声明中使用它;
;with cte as (field1, field2, field3)
update cte
set field1 = (select
case when dbo.scalarFunction (@parm1,@parm2) = 0
then 'New Value'
else cte.field1
end)
from cte
where field2 = 'some filter' and field3 = 'some filter'
select * from cte
执行此操作时,出现以下错误;
视图或函数“结果”的更新或插入失败,因为它包含派生或常量字段。
有人可以建议如何更新我的cte,然后在cte中查看更新的记录
答案 0 :(得分:1)
也许您可以在select而不是update命令中进行更改-
;with cte as (field1, field2, field3)
select
field1 = (case when field2 = 'some filter' and field3 = 'some filter' then
(case when dbo.scalarFunction (@parm1,@parm2) = 0
then 'New Value'
else cte.field1
end)
else field1 end)
,field2
,field3
from cte