2011-02-16 34 views
10

我需要得到最后一行结果集的所有列值的总和。
这是我的SQL查询。如何获得结果集最后一行中所有列值的总和?

select Master_Code, SUM(Jan), SUM(Feb), SUM(Mar) 
from dbo.foobar 
WHERE Participating_City = 'foofoo' 
GROUP BY Master_Code ORDER BY Master_Code ASC 

是这样的:

Master_Code Jan Feb Mar 
    1   4 5 6 
    2   5 5 5 
    Total  9 10 11 

回答

11

假设有没有空master_code行。

SELECT ISNULL(Master_code, 'Total') AS Master_Code, 
     Jan, 
     Feb, 
     Mar 
FROM (
     SELECT Master_code, 
      SUM(Jan) AS Jan, 
      SUM(Feb) AS Feb, 
      SUM(Mar) AS Mar 
     FROM foobar 
     WHERE Participating_City = 'foofoo' 
     GROUP BY Master_code WITH ROLLUP 
    ) AS DT 
16

做,你重复相同的查询,但没有分组工会:

select Title, Jan, Feb, Mar 
from (
    select Master_Code as Title, SUM(Jan) as Jan, SUM(Feb) as Feb, SUM(Mar) as Mar 
    from dbo.foobar 
    WHERE Participating_City = 'foofoo' 
    GROUP BY Master_Code ORDER BY Master_Code ASC 
) x 
union all 
select 'Total', SUM(Jan) as Jan, SUM(Feb) as Feb, SUM(Mar) as Mar 
from dbo.foobar 
WHERE Participating_City = 'foofoo' 
+2

+1,因为它更自我解释 – bluish 2011-02-16 13:37:55

+2

+1一个更广义的做法 – KManohar 2011-02-17 09:31:25

2

您也可以使用合并和汇总。

SELECT COALESCE(Master_Code, 'TOTAL') AS MASTER_CODE, SUM(Jan), SUM(Feb), SUM(Mar) 
FROM dbo.foobar 
WHERE Participating_City = 'foofoo' 
GROUP BY Master_Code WITH ROLLUP 
ORDER BY Master_Code DESC 
相关问题