Sql 如果表中不存在该月/年的记录,如何显示该月/年的“o”值
可能重复: 在我的表中,我没有某些月份和年份的记录,因此我需要为这些记录输入“0”,并需要在结果中显示从“2006”到“2012”的所有月份和年份,请建议我Sql 如果表中不存在该月/年的记录,如何显示该月/年的“o”值,sql,sql-server,Sql,Sql Server,可能重复: 在我的表中,我没有某些月份和年份的记录,因此我需要为这些记录输入“0”,并需要在结果中显示从“2006”到“2012”的所有月份和年份,请建议我 提前感谢dummy是您真正的桌子 WITH DummyDates (Date) AS ( SELECT DATEADD(DAY, DATEDIFF(DAY, 0, '20121231') - DATEDIFF(DAY, '20060101', '20121231'), 0) UNION ALL SELECT DAT
提前感谢dummy是您真正的桌子
WITH DummyDates (Date) AS (
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, '20121231') - DATEDIFF(DAY, '20060101', '20121231'), 0)
UNION ALL SELECT DATEADD(DAY, 1, Date)
FROM DummyDates
WHERE DATEADD(DAY, 1, Date) <= '20121231')
SELECT DatePart(yy,DummyDates.Date) as [Year],DATEPART(MM,DummyDates.Date) as [Month],SUM(Case when dummy.date is null then 0 else 1 end) as cnt
FROM DummyDates
LEFT Join dummy on dummy.Date=DummyDates.Date
Group by DatePart(yy,DummyDates.Date),DATEPART(MM,DummyDates.Date)
Order by DatePart(yy,DummyDates.Date),DATEPART(MM,DummyDates.Date)
OPTION (MAXRECURSION 0)