再帰SQLで歯抜けの日付データを取得する

公開日: : 最終更新日:2013/12/11 SQL Server , ,

再帰SQLを使って歯抜けの日付データを取得

処理が自動実行(バッチ処理)で実行された日付を管理しているテーブルから、
処理が実行されなかった日(歯抜けの日付データ)を抜き出す必要が
あったのでSQLを作ってみました。

歯抜けの日付けデータを取得するSQL

まずは長くなるSQLに「共通テーブル式」を使ってクエリに
名前をつけます。
上記のSQLで行くとWITH cal_info ASがその部分に
あたります。
その中に「再帰SQL」を使って指定された期間
の日付データを
作成します。
これで「cal_info」には2013/04/25から2013/05/10までの連続した日付のデータ

選択されます。

最後に選択された日付データをチェックをしたいテーブルの日付でLEFT OUTER JOIN(左外部結合)を
すれば「日付抜けをチェックするテーブル」で「cal_info」の日付が存在しない日がNULLで取得されます。
そのNULLになった日が「日付抜けをチェックするテーブル」に存在しない日付になります。

実行結果

カレンダー日付 チェック日付
2013/04/25 2013/04/25
2013/04/26 2013/04/26
2013/04/27 2013/04/27
2013/04/28 NULL
2013/04/29 NULL
2013/04/30 NULL
2013/05/01 2013/05/01
2013/05/02 2013/05/02
2013/05/03 2013/05/03
2013/05/04 NULL
2013/05/05 NULL
2013/05/06 NULL
2013/05/07 NULL
2013/05/08 NULL
2013/05/09 NULL
2013/05/10 NULL
スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly

関連記事

SQLServerではTRIM関数がありません

SQLServerでは空白を取り除くTRIM関数がない SQLServerではOracleやMyS

記事を読む

SQLで棒グラフの簡易版を出力する

SQLで棒グラフの簡易版出力 SQLで棒グラフの簡易版を出力してみます。 1.テーブルの作成

記事を読む

SQLServerのバージョン番号を取得する方法

SQLServerのバージョン番号を取得する SQLServerのバージョン番号は「@@VERSI

記事を読む

SQLサーバ

1行のINSERT文で複数のデータを挿入する方法

1行のInsertで複数件のデータ挿入 これまでは1行INSERT文では1行のデータしか挿入できま

記事を読む

春分の日と秋分の日をSQLで求める計算式

春分の日と秋分の日は毎年違う 春分の日と秋分の日は 祝日としての春分の日・秋分の日は、 前

記事を読む

ユーザー定義テーブル型変数を使用する

ユーザー定義テーブル型を使ってみる SQLServer 2008には、テーブル構造の定義を表す

記事を読む

DEFAULT制約付きのカラムの属性を変更する

DEFAULT制約付きのカラムの属性を変更する SQLServerでDEFAULT制約付きのカラム

記事を読む

データベースに登録されている内容を固定長の長さで出力する(2)

登録されている内容を固定長の長さで出力する 先日作成したデータベースに登録されている内容を固定長の

記事を読む

ストアドプロシジャ内で例外エラーが発生した行番号を取得する。

例外エラーが発生した行番号を取得する SQLServerのストアドプロシジャ内で例外エラーが発

記事を読む

ALTER TABLEでカラムの属性を変更する

ALTER TABLEでカラムの属性を変更する すでに作成されているテーブルのカラムの属性を変更し

記事を読む

「INNER JOIN」「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」についてまとめ

SQLで良く使うJOINについて SQLでよく使う「INNER

SQLで西暦から和暦変換を行う

SQLを使って西暦から和暦変換を行う SQLServerには西暦

SQLServerのバージョン番号を取得する方法

SQLServerのバージョン番号を取得する SQLServerのバ

SQLで指定された年月日の月末日付を取得する

指定された年月日の月末日付を取得 SQLserverには指定され

SQLServer
SQLServerで「WITH ROLLUP」を使って小計、総合計を出力する

「WITH ROLLUP」を使って小計、総合計を出力 SQLServ

→もっと見る



PAGE TOP ↑