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

2つの日付の間のすべての日付データを表示します。特定の日付の行が存在しない場合は、すべての列にゼロを表示します

    ;with d(date) as (
      select cast('10/01/2012' as datetime)
      union all
      select date+1
      from d
      where date < '10/15/2012'
      )
    select t.ID, d.date CDate, isnull(t.val, 0) val
    from d
    left join temp t
           on t.CDate = d.date
    order by d.date
    OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
    

    日付を作成する必要があるため、ここでは再帰共通テーブル式を使用しました。SQLFiddle

    MAXRECURSION番号

    このクエリで許可される再帰の最大数を指定します。 numberは、0から32767までの非負の整数です。0が指定されている場合、制限は適用されません。このオプションが指定されていない場合、サーバーのデフォルトの制限は100です。

    queryの実行中にMAXRECURSION制限の指定された数またはデフォルトの数に達すると、クエリは終了し、エラーが返されます。



    1. repmgr2.0RC2の発表

    2. Oracle 10のローカル一時テーブル(ストアドプロシージャの範囲用)

    3. SQLデータ型の概要

    4. SQLインスタンスでピークアクティビティが発生する可能性がある3つの理由は次のとおりです。