Bisakah kita memberi tanda sama dengan (=) setelah fungsi agregat dalam Transact-SQL?

11

Saya telah menemukan skrip seperti ini:

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

Saya tidak dapat memahami arti dari tanda sama dengan (=) setelah jumlah kata kunci kedua. Ketika saya menjalankan kueri itu tidak menunjukkan kesalahan baik dengan tanda sama dan tanpa.

Saya ingin tahu tujuan menempatkan tanda sama setelah kata kunci sum. Apakah itu kesalahan atau tidak?

Terima kasih

igelr
sumber

Jawaban:

19

Ini didokumentasikan dalam UPDATE (Transact-SQL) :

SET @variable = kolom = ekspresi mengatur variabel ke nilai yang sama dengan kolom. Ini berbeda dari SET @variable = kolom, kolom = ekspresi, yang menetapkan variabel ke nilai pra-pembaruan kolom.

Dalam contoh kode Anda, sumadalah nama (tidak bijaksana) dari sebuah kolom, bukan agregat.

db <> demo biola

Paul White 9
sumber