SQL Server 创建总计行
Posted
技术标签:
【中文标题】SQL Server 创建总计行【英文标题】:SQL Server create grand total row 【发布时间】:2016-02-14 16:22:30 【问题描述】:我有一个包含订单详细信息的表格。如何在最后创建一个汇总所有小计的行?
SELECT
o.order_id, o.itemDescription as Description,
o.quantity_shipped as [Quantity],
o.itemCost as [Price each],
(o.quantity_shipped * CAST(o.itemCost as float)) as [Sub Total]
FROM
dbo.order_items o
【问题讨论】:
【参考方案1】:这将按订单 ID 为您提供总计
SELECT o.order_id, SUM((o.quantity_shipped * CAST (o.itemCost as float))) as [TotalByOrderId]
FROM dbo.order_items o
GROUP BY o.order_id
这将为您提供总计
SELECT SUM((o.quantity_shipped * CAST (o.itemCost as float))) as [GrandTotal]
FROM dbo.order_items o
【讨论】:
【参考方案2】:一种方式(不是最明智的)可以是以下:
;WITH CTE AS (
SELECT o.order_id, o.itemDescription as Description,
o.quantity_shipped as [Quantity],
o.itemCost as [Price each],
(o.quantity_shipped * CAST(o.itemCost as float)) as [Sub Total]
FROM dbo.order_items o)
SELECT *
FROM CTE
UNION ALL
SELECT NULL, 'Grand Total', NULL, NULL, SUM([Sub Total])
FROM CTE
【讨论】:
【参考方案3】:你为什么要这样做?添加无意义的总行会使以后的处理变得更加复杂。除非您对子行进行分层汇总。
通常的处理方式是将总计作为发票表的一部分。
【讨论】:
感谢所有伸出援手的人。 igorM 提供了我想要的东西!以上是关于SQL Server 创建总计行的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2012 Windowing 函数计算运行总计
SQL Server Reporting Services 在聚合数据上运行总计
在 MS SQL Server 2008 的 Pivot 中计算水平总计