Können wir nach aggregierten Funktionen in Transact-SQL ein Gleichheitszeichen (=) setzen?


11

Ich bin auf ein Skript wie dieses gestoßen:

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

Ich kann die Bedeutung des Gleichheitszeichens (=) nach der zweiten Schlüsselwortsumme nicht verstehen. Wenn ich die Abfrage ausführe, werden keine Fehler sowohl mit als auch ohne Gleichheitszeichen angezeigt.

Ich möchte wissen, wozu das Schlüsselwort nach dem Schlüsselwort steht sum. Ist das ein Fehler oder nicht?

Vielen Dank

Antworten:


19

Dies ist in UPDATE (Transact-SQL) dokumentiert :

SET @variable = column = expression setzt die Variable auf den gleichen Wert wie die Spalte. Dies unterscheidet sich von SET @variable = column, column = expression, wodurch die Variable auf den Wert vor der Aktualisierung der Spalte gesetzt wird.

In Ihrem Codebeispiel sumist der (unkluge) Name einer Spalte kein Aggregat.

db <> Geigen-Demo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.