私は一見簡単なクエリで立ち往生していますが、最後の数時間はそれを機能させることができませんでした.
files
ファイル名と、このファイル内のレコード、作成日 ( create_date
)、処理日( ) などの値を保持するテーブルがありますprocessing_date
。作成日が異なる時間帯に複数のファイルが存在する可能性があり、作成日と同じ日に処理されない可能性があります。実際には、処理されるまでに最大 3 日またはそれ以上かかる場合もあります。
例として、これらの行があるとします。
create_date | processing_date
------------------------------
2012-09-10 11:10:55.0 | 2012-09-11 18:00:18.0
2012-09-10 15:20:18.0 | 2012-09-11 13:38:19.0
2012-09-10 19:30:48.0 | 2012-09-12 10:59:00.0
2012-09-11 08:19:11.0 | 2012-09-11 18:14:44.0
2012-09-11 22:31:42.0 | 2012-09-21 03:51:09.0
1 つのクエリで必要なのは、日ごとに切り捨てられたグループ化された列を取得し、とcreate_date
の差を表す 11 列を追加して、結果が大まかに次のようになるようにすることです。processing_date
create_date
create_date | diff0days | diff1days | diff2days | ... | diff10days
------------------------------------------------------------------------
2012-09-10 | 0 2 1 ... 0
2012-09-11 | 1 0 0 ... 1
など、要点を理解していただければ幸いです:)
create_date
私はこれを試してみましたが、これまでのところ、たとえば 3 の差がある単一の集計列を取得できます。
SELECT TRUNC(f.create_date, 'DD') as created, count(1) FROM files f WHERE TRUNC(f.process_date, 'DD') - trunc(f.create_date, 'DD') = 3 GROUP BY TRUNC(f.create_date, 'DD')
単一のクエリを組み合わせてみたり、サブクエリを試したりしましたが、役に立たなかったか、少なくとも SQL に関する知識が十分ではありませんでした。
上記のように、さまざまな違いを列として含めることができるように、ヒントが必要です。どうすればこれを達成できますか?