再帰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

関連記事

SQL_VARIANT_PROPERTYを使ってカラムの基本データ型を取得する

カラムの基本データ型取得 SQLサーバーで定義されているテーブルのカラムの 基本データを取得しま

記事を読む

日付の重複をSQLで検索する

SQLを使って期間の重複を見つけ出す SQLを使って、開始日付、終了日付を持っているレコードの

記事を読む

GROUP BYとHAVINGで最新日付データを取得する

GROUP BYとHAVINGで最新日付データを取得する 社員マスタなどで最新のレコードのみを取得

記事を読む

ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変更する

ALTER TABLEで既存のテーブルのプライマリーキー(主キー)を変更する ALTER TA

記事を読む

MERGEでINSERTとUPDATEを1行で実行する

MERGE文を使うと行の存在有無を気にせずに1行のSQLでOK あるテ

記事を読む

既に存在するテーブルに他のテーブルからデータをINSERTする方法

テーブルからテーブルへデータコピー 以前の投稿SELECT INTOで既存テーブルのデータを新規テ

記事を読む

SQL Server のファイルサイズを圧縮する

データベースファイルのサイズを圧縮する データベースファイル(.mdf)またはトランザクションログ

記事を読む

SQLServer上にあるテーブルの更新日時を取得する。

テーブルの更新日時を取得 SQLServer上にあるストアドプロシージャーの更新日時を取得するで

記事を読む

SQLServerでSQLを使ってテーブルのカラム名(項目名)を取得する

SQLでテーブルのカラム名(項目名)を取得 Oracleでは とわりと簡単に取得できるの

記事を読む

SQLServer

SQLで検索結果を縦横変換する

SQLで検索結果を縦横変換する SQLで取得した各行を一定のくくりで横に表示させたいときがあります

記事を読む

SQL_VARIANT_PROPERTYを使ってカラムの基本データ型を取得する

カラムの基本データ型取得 SQLサーバーで定義されているテーブルのカ

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

SQLで棒グラフの簡易版出力 SQLで棒グラフの簡易版を出力してみま

SQLServer
指定した値と同じ場合はNULLを返すNULLIF関数

使いどころがいまいち不明な「NULLIF()」 SQLServerに

ORDER BYでNULLのカラムを最後に表示

ORDER BYでNULLのカラムを最後に持ってくる SQLで何も考

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

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

→もっと見る



PAGE TOP ↑