2011-02-16 75 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 
相關問題