sql – 添加包含总计的摘要行

我知道这听起来很疯狂,可能不应该这样做,但我需要这样 – 我有一个记录从SELECT [类型],[总销售]从前

我想在末尾添加一个额外的行,以在表的末尾显示SUM(After)。这可以做吗?

如果您使用SQL Server 2008或更高版本,可以使用ROLLUP() GROUP BY功能:

SELECT
  Type = ISNULL(Type, 'Total'),
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;

这假定类型列不能有NULL,因此此查询中的NULL将指示汇总行,即具有总计的行。然而,如果类型列可以有自己的NULL,更合适的总行的会计类型将像@ Declan_K的答案,即使用GROUPING()函数:

SELECT
  Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
  TotalSales = SUM(TotalSales)
FROM atable
GROUP BY ROLLUP(Type)
;
http://stackoverflow.com/questions/17934318/add-a-summary-row-with-totals

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – 添加包含总计的摘要行