У меня есть cte, как показано ниже;
;with cte as (field1, field2, field3)
Мне нужно выбрать записи из этого CTE, но прежде чем мне нужно будет сделать некоторые обновления в одном из столбцов в этом CTE, и это обновление основанона выходе из скалярной функции (он вернет 1 или 0 в качестве выходного (бит)), который я использую в выражении case, как показано ниже:
;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
Когда я выполняю это, я получаю ошибку ниже;
Не удалось обновить или вставить представление или функцию 'result', поскольку она содержит производное или постоянное поле.
Может кто-нибудь дать совет, как обновить мой cte, а затемсм. обновленные записи в cte