ste*_*eve 0 sql t-sql sql-server sql-server-2000
下面我有一个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)
Run Code Online (Sandbox Code Playgroud)
根据您的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)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |