2016-11-20 7 views
0

Я пишу SQL-запросы с помощью AdventureWorks2014, и у меня есть один, который принимает даты заказа и сокращает его на несколько дней, месяцев, дней недели и т. Д. Когда я использую запрос, который перечисляет все месяцы один за другим с количеством заказов, сделанных за этот заданный интервал времени, он игнорирует тот месяц, в котором не было заказа. Я хотел бы иметь там месяц с 0 заказами, но я понятия не имею, как это изменить.Список месяцев с номером заказа, 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

Создайте таблицу со всеми возможными комбинациями года и месяца и используйте ВНУТРЕННУЮ СОЕДИНЕНИЕ, чтобы присоединиться к этой таблице к таблице DW.DIMTime, сохраняя все месяцы и годы из таблицы ваших месяцев.