2016-11-20 85 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表格,從月份列表中保留所有月份和年份。