sql >> データベース >  >> RDS >> Sqlserver

0カウントでカウントを選択

    KM の回答を拡張すると、数値テーブルのような日付テーブルが必要になります。Web には多くの例がありますが、ここでは単純なものを示します。

    CREATE TABLE DateList ( DateValue DATE, CONSTRAINT PK_DateList PRIMARY KEY CLUSTERED (DateValue) ) GO -- 2015 年 1 月 1 日と 2015 年 12 月 31 日の日付を挿入 DECLARE @StartDate DATE ='01/01/2015 ' DECLARE @EndDatePlus1 DATE ='01/01/2016' DECLARE @CurrentDate DATE =@StartDate WHILE @EndDatePlus1> @CurrentDate BEGIN INSERT INTO DateList VALUES (@CurrentDate) SET @CurrentDate =DATEADD(dd,1,@CurrentDate) END  

    テーブルができました

    その後、次のようにクエリを書き換えることができます:

    SELECT top (5) DateValue, isnull(Count(id),0) as CountedFROM DateList LEFT OUTER JOIN DateValue のテーブル =CAST(Created AS DATE) GROUP BY DateValueorder by DateValue desc  

    2 つの注意事項:範囲を指定するには where 句が必要です。キャストでの結合は理想的ではありません。日付テーブルの型は、通常のテーブルの型と一致する必要があります。



    1. MySQL上の@GeneratedValueポリモーフィック抽象スーパークラス

    2. 選択としてのテーブルの作成について(CTAS)

    3. MySQLWHERELIKEがphpおよびpdoバインドを使用して複数のフィールドで機能しない

    4. SQL で均等に分散されたアイテムのグループ化