calculate Row Wise Sum - Sql server

后端 未结 3 1160
一个人的身影
一个人的身影 2020-12-09 23:32

This is My table :

ID              Q1         Q2           Q3            Q4
----------------------------------------------------------------
20130712                 


        
3条回答
  •  鱼传尺愫
    2020-12-09 23:56

    Expanding on Roman Pekar, If you're using a temp table and want to do this, you need to use tempdb like this:

    select
    @stmt = isnull(@stmt + ', ', '') + '[' + name + ']',
    @stmt1 = isnull(@stmt1 + ', ', '') + '(' + '[' + name + ']'+  ')'
    from tempdb.sys.columns
    where object_id = object_id('tempdb..##TempTable') and name not in ('ID')
    --ID would be one of the column names you DONT want to sum.
    --also notice the double pound sign. you need to declare your temp table with double pounds or it wont work
    --also notice how I put brackets around name, that's because my columns weren't working because they had slashes in their names.
    --the rest of the code is the same
    select @stmt =
              'select Date_Packed, ' + @stmt + '' + 
              ', (select sum(S.Q) from (values ' + @stmt1 +
              ') as S(Q) where S.Q is not null) as [Total] ' +
              'from tempdb..##TempTableas T'
              print @stmt
    
    exec sp_executesql @stmt = @stmt
    --don't forget to drop it
              drop table ##TempTable
    

提交回复
热议问题