列出订单数量的月份,AdventureWorks2014

时间:2016-11-20 16:31:51

标签: sql-server adventureworks

我正在使用AdventureWorks2014编写一个SQL查询,我有一个,它接受订单日期并将其缩短为几天,几个月,几天等等。当我使用一个查询,它按照给定的时间间隔逐个列出所有月份的订单数量时,忽略那些没有订单的月份。我希望有一个月有0个订单,但我不知道如何改变它。

以下是我的疑问:

SELECT DISTINCT
    a.SalesOrderID,
    CONCAT(DATEPART(yyyy,OrderDate), RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(MONTH, OrderDate)), 2), RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, OrderDate)), 2)) AS TimeID,
    DAY(OrderDate) AS Day,
    DATEPART(WEEKDAY, OrderDate) AS 'DayOfWeek',
    DATENAME(WEEKDAY, OrderDate) AS 'DayOfWeek Name',
    MONTH(OrderDate) AS MONTH,
    DATENAME(Month, OrderDate) AS 'Month Name',
    DATEPART(QUARTER, OrderDate) as 'Quarter',
    YEAR(orderDate) AS YEAR
INTO 
    [DW].[DIMTime]
FROM 
    [AdventureWorks2014].[Sales].[SalesOrderHeader] a;

SELECT 
    MONTH, year, COUNT(SalesOrderID)
FROM
    [DW].DIMTime
GROUP BY 
    MONTH, Year
ORDER BY 
    Year, Month

我希望你能帮助我!提前致谢

1 个答案:

答案 0 :(得分:1)

创建一个包含年和月的所有可能组合的表,并使用OUTER JOIN将此表连接到DW.DIMTime表,保留月份表中的所有月份和年份。