Czy możemy umieścić znak równości (=) po funkcjach agregujących w Transact-SQL?

11

Spotkałem taki skrypt:

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

Nie rozumiem znaczenia znaku równości (=) po sumie drugiego słowa kluczowego. Po uruchomieniu zapytania nie wyświetla żadnych błędów zarówno ze znakiem równości, jak i bez.

Chcę poznać cel wprowadzenia znaku równości po słowie kluczowym sum. Czy to pomyłka czy nie?

Dzięki

igelr
źródło

Odpowiedzi:

19

Jest to udokumentowane w UPDATE (Transact-SQL) :

SET @variable = column = expression ustawia zmienną na taką samą wartość jak kolumna. Różni się to od SET @variable = column, column = expression, który ustawia zmienną na wartość sprzed aktualizacji kolumny.

W twoim kodzie sumjest (niemądra) nazwa kolumny, a nie agregacja.

db <> demo skrzypiec

Paul White 9
źródło