我有这个查询
SELECT DATE,COUNT(DATE) FROM TABLE WHERE DATE BETWEEN DATE1 AND DATE2 GROUP BY DATE..
结果将是(对于2012年1月2日至2012年3月2日,即3个日期)
1/2/2012 5
2/2/2012 6
3/2/2012 9
有时如果计数为空则表示它没有显示日期,即
1/2/2012 5
If (2/2/2012 is not there)
3/2/2012 9
我想列出所有日期。就像这样
1/2/2012 5
2/2/2012 0
3/2/2012 9
怎么做?
答案 0 :(得分:4)
您可以使用CTE生成日期列表,并使用left join
:
; with Dates as
(
select cast('2012-01-01' as date) as dt
union all
select dateadd(day, 1, dt)
from Dates
where dateadd(day, 1, dt) < '2012-01-06'
)
select d.dt
, count(yt.id)
from Dates d
left join
YourTable yt
on yt.Date = d.Dt
group by
d.dt;