我知道這聽起來很瘋狂,也許不應該做這樣的方式,但我需要的是這樣的 - 我有一個記錄從SELECT [Type], [Total Sales] From Before
添加摘要行以總計
我想在最後添加一個額外的行在表格末尾顯示SUM(After)。這可以做到嗎?
我知道這聽起來很瘋狂,也許不應該做這樣的方式,但我需要的是這樣的 - 我有一個記錄從SELECT [Type], [Total Sales] From Before
添加摘要行以總計
我想在最後添加一個額外的行在表格末尾顯示SUM(After)。這可以做到嗎?
如果你是SQL Server 2008或更高版本上,您可以使用ROLLUP()
GROUP BY功能:
SELECT
Type = ISNULL(Type, 'Total'),
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
這假定Type
列不能有NULL值,因此在此查詢的NULL將指示彙總行,總計行。但是,如果Type
列都可以有自己的空值,總排越正確類型的會計將是@ Declan_K的答案,即使用GROUPING()
功能,如:
SELECT
Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
嘗試使用union all
如下
SELECT [Type], [Total Sales] From Before
union all
SELECT 'Total', Sum([Total Sales]) From Before
,如果你有一個排序問題,因爲我一建議試試這個:
select [Type], [Total Sales]
from (SELECT [Type], [Total Sales], 0 [Key]
From Before
union all
SELECT 'Total', Sum([Total Sales]), 1 From Before) sq
order by [Key], Type
你可以使用ROLLUP運營商
SELECT CASE
WHEN (GROUPING([Type]) = 1) THEN 'Total'
ELSE [Type] END AS [TYPE]
,SUM([Total Sales]) as Total_Sales
From Before
GROUP BY
[Type] WITH ROLLUP
這是您希望在SQL Server 2008+中使用的更強大的分組/彙總語法。對指定您使用的版本總是有用的,所以我們不必猜測。
SELECT
[Type] = COALESCE([Type], 'Total'),
[Total Sales] = SUM([Total Sales])
FROM dbo.Before
GROUP BY GROUPING SETS(([Type]),());
好東西,謝謝分享! –
SQL Server有分類彙總支持: [請參閱彙總](http://msdn.microsoft.com/en-us/library/ms189305%28v=sql.90%29.aspx)。 –