2016-11-20 82 views
0

我正在使用AdventureWorks2014编写SQL查询,并且我有一个订单日期并将其切割为一周中的几天,几个月,几天等等。当我使用一个查询,它列出所有的月份和这个给定的时间间隔内的订单数量时,它会忽略那些没有订单的月份。我想在那里有一个月零订单,但我不知道如何改变这一点。列出月份与订单数量,AdventureWorks2014

这里是我的查询:

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

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