我有以下查询:
SELECT DISTINCT
YEAR(DateRegistered) as Years,
Months.[MonthName],
COUNT(UserID)as totalReg
FROM
Months WITH(NOLOCK)
LEFT OUTER JOIN
UserProfile WITH(NOLOCK)
ON
Months.MonthID = MONTH(DateRegistered)
AND
DateRegistered > DATEADD(MONTH, -12,GETDATE())
GROUP BY YEAR(DateRegistered), Months.[MonthName]
ORDER BY Months.[MonthName]
如您所知,这将始终带回 12 个月的数据。因此它正在工作,尽管这种方法存在错误。
它在没有数据的月份创建 Null 值,现在记录应该存在(查询的全部点)但是 Year 字段带来了 Null,这是我不想要的。
现在我明白问题是因为没有数据,它怎么知道是哪一年?
所以我的问题是 - 有没有办法解决这个问题并替换空值?我怀疑我将不得不彻底改变我的方法论。
**YEAR** **MONTH** **TOTAL**
2013 April 1
2013 August 1
NULL December 0
2013 February 8
2013 January 1
2013 July 1
NULL June 0
2013 March 4
NULL May 0
NULL November 0
NULL October 0
2012 September 3