查询:
SELECT
SUM(TotalDue), DATENAME(dw, OrderDate), COUNT(DISTINCT ProductID)
FROM Sales.SalesOrderHeader headers
INNER JOIN Sales.SalesOrderDetail details
ON headers.SalesOrderID = details.SalesOrderID
GROUP BY DATENAME(dw, OrderDate);
我的当前结果是:
560644420,8959 Wednesday 262
432484099,6362 Thursday 260
478917953,3263 Saturday 251
212585108,7496 Friday 238
457072471,4514 Monday 241
381773345,5659 Sunday 259
403492724,4161 Tuesday 235
现在我想将这些数据透视,以便天数成为列。 问题是我不知道如何实现这个结果 - 如何让第一行只表示它代表总和,第二行表示它计算了不同的ID数量。
非常感谢您提供任何建议和帮助。
到目前为止,我的尝试可能会使您的回答更容易,因为您不必编写所有强大的代码:
SELECT [Total], [Monday], [Tuesday]
FROM
(
SELECT SUM(TotalDue)[Total], DATENAME(dw, OrderDate) [Day], COUNT(DISTINCT ProductID)[different products]
FROM Sales.SalesOrderHeader headers
INNER JOIN Sales.SalesOrderDetail details ON headers.SalesOrderID = details.SalesOrderID
GROUP BY DATENAME(dw, OrderDate)
) as source
PIVOT(
COUNT([different products]) FOR [Day] IN ([Monday], [Tuesday])
) as pivoted;
我期望的结果(日期顺序不重要):
Monday Tuesday Wednesday ...
Sums of orders 457072471,4514 403492724,4161 560644420,8959
Different items count 241 235 262
sum(TotalDue)
,第二个用于UNION ALL
中产品数量的计数),它应该能解决问题。 - B3S