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

SQL その月のテーブルにデータが存在しない場合、その月の「0」値を表示する方法

    1 ~ 12 の値でテーブルをクエリし、結果を左外部結合できます。

    クエリの代わりにテーブル変数を使用し、CTE を使用して数値を含むテーブルを作成するサンプルを次に示します。

    declare @T table
    (
      Month int
    )
    
    insert into @T values(1)
    insert into @T values(1)
    insert into @T values(1)
    insert into @T values(3)
    insert into @T values(3)
    
    ;with Months(Month) as
    (
      select 1
      union all
      select Month + 1
      from Months
      where Month < 12
    )
    select M.Month,
           count(T.Month) Count,
           isnull(sum(T.Month), 0) Sum
    from Months as M
      left outer join @T as T
        on M.Month = T.Month
    group by M.Month
    

    結果:

    Month       Count       Sum
    ----------- ----------- -----------
    1           3           3
    2           0           0
    3           2           6
    4           0           0
    5           0           0
    6           0           0
    7           0           0
    8           0           0
    9           0           0
    10          0           0
    11          0           0
    12          0           0
    


    1. null許容列に実際のNULL値を挿入するにはどうすればよいですか?

    2. ストアド プロシージャは、SQL Server 2012 ではエラーをスローしますが、SQL Server 2000 では正常に動作します

    3. 依存行を含むDBからの行の抽出

    4. 列データ型のBYTEとCHARの違い