【问题标题】:T-SQL SUM TotalT-SQL 总和
【发布时间】:2012-10-16 03:08:34
【问题描述】:

下面我有一个 T-SQL 查询,它返回购买商品的数量、折扣和总数 - 按购买月/年分组。如何更新查询以返回总计行 我可以在哪里加总列中的金额? 能够将所有行加起来会很好,但我的 主要项目是我需要能够得到一个总计。谢谢。

    Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) 
    AS [Month],
    SUM(Amount) AS [Amount],
    SUM(Discount1) AS [Discount 1],
    SUM(Discount2) AS [Discount 2],
    SUM(Amount - Discount1 - Discount2) AS [Total]
    From 
    Orders
    JOIN Customer on orders.cust_ky=customer.cust_ky
    GROUP BY DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4))
    ORDER BY MAX(OrderDate)

【问题讨论】:

    标签: sql sql-server tsql sql-server-2000


    【解决方案1】:

    根据您的 sql-server 版本,您可能能够实现汇总功能(SQL-Server 2005+):

    Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) AS [Month],
        SUM(Amount) AS [Amount],
        SUM(Discount1) AS [Discount 1],
        SUM(Discount2) AS [Discount 2],
        SUM(Amount - Discount1 - Discount2) AS [Total]
    From Orders
    JOIN Customer 
        on orders.cust_ky=customer.cust_ky
    GROUP BY ROLLUP(DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)))
    ORDER BY MAX(OrderDate)
    

    或者您可以使用与此类似的UNION ALL,其中第二个查询获取不带GROUP BY 的总数:

    Select DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4)) AS [Month],
        SUM(Amount) AS [Amount],
        SUM(Discount1) AS [Discount 1],
        SUM(Discount2) AS [Discount 2],
        SUM(Amount - Discount1 - Discount2) AS [Total]
    From Orders
    JOIN Customer 
        on orders.cust_ky=customer.cust_ky
    GROUP BY DATENAME(month, [OrderDate]) + ' ' + CAST(YEAR(OrderDate) AS CHAR(4))
    union all
    Select 'Total',
        SUM(Amount) AS [Amount],
        SUM(Discount1) AS [Discount 1],
        SUM(Discount2) AS [Discount 2],
        SUM(Amount - Discount1 - Discount2) AS [Total]
    From Orders
    JOIN Customer 
        on orders.cust_ky=customer.cust_ky
    

    【讨论】:

    • 对不起,我忘了说我使用的是 SQL Server 2000,可以做汇总功能吗?
    • 如果sql-server 2000,则需要使用第二个版本。
    • 我尝试了 UNION ALL 方法,但出现语法错误:关键字“UNION”附近的语法不正确。
    猜你喜欢
    • 2017-12-09
    • 2012-07-03
    • 2013-08-07
    • 2021-01-14
    • 2021-04-08
    • 2015-12-20
    • 1970-01-01
    • 2013-08-13
    • 2017-12-06
    相关资源
    最近更新 更多