SQL Server

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

投稿日:2013/05/07 更新日:

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

当サイトのおすすめ記事

パソコン 1

当サイトは約5年間、さくらのレンタルサーバで運用させて頂きました。 何かトラブルがあったわけではないのですが、WordPressの表示速度を速くしたくてSSD搭載のレンタルサーバーで運用してみることに ...

プログラミング 2

Contents1 SQLでIFを使わずに条件分岐する1.1 1.テーブルとデータの準備1.2 2.条件を分岐させて検索1.3 3.解説 SQLでIFを使わずに条件分岐する SQLでIFを書けばWHE ...

SQLServer 3

SQLServerで発生するエラーコードをSQLで取得する SQLServerで発生したエラーコードの内容を メッセージが定義されているテーブルから取得します。 エラーコードを取得するSQL SQLs ...

4

Contents1 SQLServerでテーブル型を戻り値とする関数を作る1.1 テーブル型を戻り値とする関数の作成1.2 呼び出しかた SQLServerでテーブル型を戻り値とする関数を作る SQL ...

5

Contents1 アフィリエイトで即効成果を出す1.1 自分で買えば確実に成果が上がる1.2 A8.netでは自分で購入してもOKなものがある1.2.1 A8.netにサイトを登録する1.2.2 承 ...

-SQL Server
-, ,

Copyright© ソフトウェア開発日記 , 2017 AllRights Reserved.