Можем ли мы поставить знак равенства (=) после агрегатных функций в Transact-SQL?

11

Я столкнулся со сценарием, как это:

set @sum = sum = (case when somecol1 is null then DATEDIFF(d,[somecol2],somecol3) else 0 end)

Я не могу понять значение знака равенства (=) после второй ключевой суммы. Когда я запускаю запрос, он не показывает никаких ошибок как со знаком равенства, так и без него.

Я хочу знать цель поставить знак равенства после ключевого слова sum. Это ошибка или нет?

Спасибо

igelr
источник

Ответы:

19

Это задокументировано в UPDATE (Transact-SQL) :

SET @variable = column = expression устанавливает для переменной то же значение, что и для столбца. Это отличается от SET @variable = column, column = expression, которое устанавливает переменную в значение перед обновлением столбца.

В вашем примере кода sumэто (неразумное) имя столбца, а не агрегат.

db <> Fiddle demo

Пол Уайт 9
источник