-2

我有这个查询

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

有时,如果计数为 Null,则表示它不显示日期,即

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

怎么做?

4

1 回答 1

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;

SQL Fiddle 上的实时示例。

于 2012-07-03T05:45:21.830 回答