or
igelr imported from SE
sql-server
I have encountered a script like this:
    
    set @sum = sum = (case when somecol1 is null then 
        DATEDIFF(d,[somecol2],somecol3) else 0 end)

I can't understand the meaning of the equal sign (=) after the second keyword sum. When I run the query it is not showing any errors both with the equal sign and without. 

I want to know the purpose of putting an equal sign after the keyword `sum`. Is that a mistake or not?
Top Answer
Paul White
This is documented in [UPDATE (Transact-SQL)][1]:

> SET @variable = column = expression sets the variable to the same value as the column. This differs from SET @variable = column, column = expression, which sets the variable to the pre-update value of the column.

In your code example, `sum` is the (unwise) name of a column, not an aggregate.

Demo:

<>https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=8aa0603ba344816390cb287b842385de


  [1]: https://docs.microsoft.com/en-us/sql/t-sql/queries/update-transact-sql
  [2]: https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=8aa0603ba344816390cb287b842385de
Can we put an equal sign (=) after aggregate functions in Transact-SQL?

This is a dedicated room for discussion about this question.

Once logged in you can direct comments to the question poster (or any answer poster) here.