如何解决SQL Server 2014 数据透视表行列月授予总数
如何在下表中添加行和列总计? 我想按月获得总计和总计。
但是,我做不到。
SELECT *
FROM(
SELECT
YEAR(DueDate) [Year],CASE MONTH(DueDate)
WHEN 1 THEN 'January'
WHEN 2 THEN 'February'
WHEN 3 THEN 'march'
WHEN 4 THEN 'April'
WHEN 5 THEN 'May'
WHEN 6 THEN 'June'
WHEN 7 THEN 'July'
WHEN 8 THEN 'August'
WHEN 9 THEN 'September'
WHEN 10 THEN 'October'
WHEN 11 THEN 'November'
WHEN 12 THEN 'December'
END as [Month],ProductID,OrderQty
FROM Production.WorkOrder
) WorkOrders
PIVOT
(
SUM(OrderQty)
FOR [Month] IN (
[January],[February],[march],[April],[May],[June],[July],[August],[September],[October],[November],[December]
)
) AS Pivottable
ORDER BY [Year],ProductID
解决方法
使用条件聚合比限制性的 PIVOT
运算符更容易远。
没有样本数据,也没有预期的结果,这不会被测试,但你应该能够通过这样的事情实现你所追求的:
SELECT CASE WHEN GROUPING(DATEPART(YEAR,DueDate)) = 0 THEN
CAST(DATEPART(YEAR,DueDate) AS varchar(50))
ELSE 'GrandTotal' END AS [Year],SUM(CASE DATEPART(MONTH,DueDate) WHEN 1 THEN OrderQty END) AS January,--Don't use single quotes for alaises,DueDate) WHEN 2 THEN OrderQty END) AS Feburary,--it can be very confusing to read.
SUM(CASE DATEPART(MONTH,DueDate) WHEN 3 THEN OrderQty END) AS March,--Single quotes are for literal strings.
SUM(CASE DATEPART(MONTH,DueDate) WHEN 4 THEN OrderQty END) AS April,--Using ' for alias only work in the SELECT too,DueDate) WHEN 5 THEN OrderQty END) AS May,--something like ORDER BY 'January' would not
SUM(CASE DATEPART(MONTH,DueDate) WHEN 6 THEN OrderQty END) AS June,--order by data by the column aliases as 'January'.
SUM(CASE DATEPART(MONTH,DueDate) WHEN 7 THEN OrderQty END) AS July,DueDate) WHEN 8 THEN OrderQty END) AS August,DueDate) WHEN 9 THEN OrderQty END) AS September,DueDate) WHEN 10 THEN OrderQty END) AS October,DueDate) WHEN 11 THEN OrderQty END) AS November,DueDate) WHEN 12 THEN OrderQty END) AS December,SUM(OrderQty) AS GrandTotal,ProductID
FROM Production.WorkOrder
GROUP BY GROUPING SETS(
(DATEPART(YEAR,DueDate),ProductID),(DATEPART(YEAR,DueDate)),()
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。