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


11

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 n'affiche aucune erreur à la fois avec le signe égal et sans.

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

Merci

Réponses:


19

Ceci est documenté dans UPDATE (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, sumest le nom (imprudent) d'une colonne, pas un agrégat.

démo db <> fiddle

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.