【问题标题】:SQL Server create grand total rowSQL Server 创建总计行
【发布时间】: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

【问题讨论】:

    标签: sql-server subtotal


    【解决方案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 提供了我想要的东西!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        相关资源
        最近更新 更多