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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.