web-dev-qa-db-fra.com

Pouvons-nous mettre un signe égal (=) après les fonctions d'agrégation dans Transact-SQL?

J'ai rencontré un script comme celui-ci:

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

Je ne peux pas comprendre la signification du signe égal (=) après la deuxième somme du mot clé. Lorsque j'exécute la requête, elle ne montre aucune erreur avec ou sans signe égal.

Je veux connaître le but de mettre un signe égal après le mot clé sum. Est-ce une erreur ou non?

Merci

11
igelr

Ceci est documenté dans PDATE (Transact-SQL) :

SET @variable = column = expression définit la variable sur la même valeur que la colonne. Cela diffère de SET @variable = column, column = expression, qui définit la variable sur la valeur de pré-mise à jour de la colonne.

Dans votre exemple de code, sum est le nom (imprudent) d'une colonne, pas un agrégat.

démo db <> violon

19
Paul White 9