-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 に答える