我正在使用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
我希望你能帮助我!提前致谢
答案 0 :(得分:1)
创建一个包含年和月的所有可能组合的表,并使用OUTER JOIN将此表连接到DW.DIMTime表,保留月份表中的所有月份和年份。