从orderDate SQL中获取年、季度



我正在使用adventureworks 2019,并希望使用销售收入数据进行预测。目前,数据被分类为salesOrders(因此SalesOrderID,只是在此查询中未被选中)。这就是为什么同一年的同一季度有许多行。

我正在使用当前查询:

SELECT
SST.[Name] AS RegionName,
CASE WHEN SSOH.[OnlineOrderFlag] = 1 THEN 'Online' ELSE 'Reseller' END AS [SalesChannel],
YEAR(SSOH.[OrderDate]) AS Year,
DATEPART(Quarter, SSOH.[OrderDate]) AS Quarter,
SSOD.[LineTotal] AS Revenue

FROM [Sales].[SalesOrderDetail] AS SSOD
LEFT JOIN [Sales].[SalesOrderHeader] AS SSOH
ON SSOD.[SalesOrderID] = SSOH.[SalesOrderID]
LEFT JOIN [Production].[Product] AS PP
ON SSOD.[ProductID] = PP.[ProductID]
LEFT JOIN [Sales].[SalesTerritory] AS SST
ON SST.TerritoryID = SSOH.TerritoryID

和输出:

RegionName  SalesChannel    Year    Quarter Revenue
Southeast   Reseller    2011    2   2024.994000
Southeast   Reseller    2011    2   6074.982000
Southeast   Reseller    2011    2   2024.994000
Southeast   Reseller    2011    2   2039.994000
Southeast   Reseller    2011    2   2039.994000
Southeast   Reseller    2011    2   4079.988000
Southeast   Reseller    2011    2   2039.994000
Southeast   Reseller    2011    2   86.521200
Southeast   Reseller    2011    2   28.840400
Southeast   Reseller    2011    2   34.200000
Southeast   Reseller    2011    2   10.373000
Southeast   Reseller    2011    2   80.746000
Southeast   Reseller    2011    2   419.458900
Southeast   Reseller    2011    2   874.794000
Canada  Reseller    2011    2   809.760000
Canada  Reseller    2011    2   714.704300
Canada  Reseller    2011    2   1429.408600
Canada  Reseller    2011    2   20.746000
Canada  Reseller    2011    2   115.361600
Canada  Reseller    2011    2   1445.189800
Canada  Reseller    2011    2   6074.982000
Canada  Reseller    2011    2   4049.988000
Canada  Reseller    2011    2   40.373000
Canada  Reseller    2011    2   1637.400000
Canada  Reseller    2011    2   8099.976000
Canada  Reseller    2011    2   4079.988000
Canada  Reseller    2011    2   57.680800
Canada  Reseller    2011    2   4049.988000
Canada  Reseller    2011    2   100.932500
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   2097.294500
Canada  Reseller    2011    2   367.876400
Canada  Reseller    2011    2   3499.176000
Canada  Reseller    2011    2   551.814600
Canada  Reseller    2011    2   2097.294500
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   838.917800
Canada  Reseller    2011    2   2146.962000
Canada  Reseller    2011    2   874.794000
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   356.898000
Canada  Reseller    2011    2   5248.764000
Canada  Reseller    2011    2   183.938200
Canada  Reseller    2011    2   535.742400
Canada  Reseller    2011    2   2146.962000
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   183.938200
Canada  Reseller    2011    2   356.898000
Canada  Reseller    2011    2   178.580800
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   874.794000
Southwest   Reseller    2011    2   419.458900
Northwest   Reseller    2011    2   2039.994000
Northwest   Reseller    2011    2   8099.976000
Northwest   Reseller    2011    2   28.840400
Northwest   Reseller    2011    2   28.840400
Northwest   Reseller    2011    2   4049.988000
Northwest   Reseller    2011    2   6119.982000
Northwest   Reseller    2011    2   2039.994000
Northwest   Reseller    2011    2   2024.994000
Northwest   Reseller    2011    2   40.373000
Northwest   Reseller    2011    2   2039.994000
Northwest   Reseller    2011    2   20.186500
Northwest   Reseller    2011    2   57.680800
Northwest   Reseller    2011    2   4049.988000
Northwest   Reseller    2011    2   10.373000
Northwest   Reseller    2011    2   4049.988000
Northwest   Reseller    2011    2   2024.994000
Northwest   Reseller    2011    2   34.200000
Northwest   Reseller    2011    2   2024.994000
Southwest   Reseller    2011    2   419.458900
Southwest   Reseller    2011    2   2146.962000
Southwest   Reseller    2011    2   356.898000
Southwest   Reseller    2011    2   874.794000
Southwest   Reseller    2011    2   838.917800
Southwest   Reseller    2011    2   419.458900
Central Reseller    2011    2   17.100000
Central Reseller    2011    2   2039.994000
Central Reseller    2011    2   2024.994000
Central Reseller    2011    2   2024.994000
Canada  Reseller    2011    2   2624.382000
Canada  Reseller    2011    2   4293.924000
Canada  Reseller    2011    2   2936.212300
Canada  Reseller    2011    2   2516.753400
Canada  Reseller    2011    2   173.042400
Canada  Reseller    2011    2   1103.629200
Canada  Reseller    2011    2   40.373000
Canada  Reseller    2011    2   40.373000
Canada  Reseller    2011    2   1749.588000
Canada  Reseller    2011    2   20.746000
Canada  Reseller    2011    2   367.876400
Canada  Reseller    2011    2   2624.382000
Canada  Reseller    2011    2   1258.376700
Canada  Reseller    2011    2   838.917800
Canada  Reseller    2011    2   551.814600
Canada  Reseller    2011    2   838.917800
Canada  Reseller    2011    2   838.917800
Canada  Reseller    2011    2   367.876400
Canada  Reseller    2011    2   28.840400
Canada  Reseller    2011    2   838.917800
Canada  Reseller    2011    2   1427.592000
Canada  Reseller    2011    2   5248.764000
Canada  Reseller    2011    2   1677.835600
Canada  Reseller    2011    2   535.742400
Canada  Reseller    2011    2   115.361600
Canada  Reseller    2011    2   535.742400
Canada  Reseller    2011    2   20.186500
Canada  Reseller    2011    2   1070.694000
Canada  Reseller    2011    2   1258.376700
Northwest   Reseller    2011    2   714.704300

我试图将每年每个季度的所有收入相加,以获得(想象在收入栏中是2011年第1季度的一个值:

RegionName  SalesChannel    Year    Quarter Revenue
Southeast   Reseller    2011    1   
Southeast   Reseller    2011    2   
Southeast   Reseller    2011    3   
Southeast   Reseller    2011    4  
Southeast   Reseller    2012    1   
Southeast   Reseller    2012    2  
Southeast   Reseller    2012    3  

我用过:

WHERE SST.[Name] = 'Australia' AND SSOH.[OnlineOrderFlag] = 1
GROUP BY DATEPART(Quarter, SSOH.[OrderDate]), SST.[Name], SSOH.[OnlineOrderFlag], SSOH.[OrderDate], SSOD.[LineTotal]

获取区域只有澳大利亚,销售渠道是"在线",但是我得到这样的输出:

RegionName  SalesChannel    Year    Quarter Revenue
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3399.990000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3399.990000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000
Australia   Online  2012    1   3578.270000

所以,它仍然没有像我希望的那样按季度分组收入。

有人知道解决这个问题的方法吗?

非常感谢。

谢谢!

我想你只是想要聚合:

SELECT SST.[Name] AS RegionName,
(CASE WHEN SSOH.[OnlineOrderFlag] = 1 THEN 'Online' ELSE 'Reseller'
END) AS [SalesChannel],
YEAR(SSOH.[OrderDate]) AS Year,
DATEPART(Quarter, SSOH.[OrderDate]) AS Quarter,
SUM(SSOD.[LineTotal]) AS Revenue
FROM [Sales].[SalesOrderDetail] SSOD LEFT JOIN
[Sales].[SalesOrderHeader] SSOH
ON SSOD.[SalesOrderID] = SSOH.[SalesOrderID] LEFT JOIN
[Production].[Product] AS PP
ON SSOD.[ProductID] = PP.[ProductID] LEFT JOIN
[Sales].[SalesTerritory] AS SST
ON SST.TerritoryID = SSOH.TerritoryID
GROUP BY SST.[Name] AS RegionName,
(CASE WHEN SSOH.[OnlineOrderFlag] = 1 THEN 'Online' ELSE 'Reseller'
END) AS [SalesChannel],
YEAR(SSOH.[OrderDate]) AS Year,
DATEPART(Quarter, SSOH.[OrderDate]);

最新更新