次のようなデータを含むログ テーブルがあります。
ID MSG 日付 ---------------------------------------------- 1 テスト 2010-01-01 09:00:00 2 ジョブ開始 2010-01-01 09:03:00 3 何とかしろ 2010-01-01 09:03:10 4 別のことをする 2010-01-01 09:03:12 5 何とかしろ 2010-01-01 09:04:19 6 ジョブ終了 2010-01-01 09:06:30 7 ジョブ開始 2010-01-01 09:18:03 8 何とかしろ 2010-01-01 09:18:17 9 他のことをする 2010-01-01 09:19:48 10 ジョブ終了 2010-01-01 09:20:27
これには、(とりわけ) アプリケーションによって書き込まれたメッセージが含まれます。このような「ジョブ開始」と「ジョブ終了」のすべてのペアについて、「ジョブ開始」レコードと「ジョブ終了」レコードの間に書き込まれるすべてのレポートを作成することに関心があります。理想的には、レポートは次のようになります。
BATCH_NUM ID MSG 日付 -------------------------------------------------- ------- 1 3 何とかしろ 2010-01-01 09:03:10 1 4 別のことをする 2010-01-01 09:03:12 1 5 何とかしろ 2010-01-01 09:04:19 2 8 何とかしろ 2010-01-01 09:18:17 2 9 他のことをする 2010-01-01 09:19:48
(読みやすくするためにバッチ間に改行を追加)
出力レポートでは、「Job STart」メッセージと「Job End」メッセージ、および「TEst」メッセージ (「Job Start」と「Job End」のペアの外に存在するメッセージ) が省略されます。
この種のクエリをどこから書き始めればよいのか、あるいは PL/SQL を使用する方がよいのかどうかさえわかりません。一体、私がやろうとしていることに対して適切な技術用語があるかどうかさえわかりません。;)
(オラクル版は10g)