2017-12-24 4 views
0

私は多くのOracle SQLを経験していないことだし、私は上記のクエリは私にSYSDATEを持つすべてのレコードの結果を与える変数の使用

select count(*) from TABLE where date = (select trunc(sysdate -1) from dual) 

を使用する予定のため、いくつかのタスクを達成しようとしてマイナス1.私は土曜と日曜日のシナリオを処理し、クエリ場合、クエリは日曜日に実行され、@var = 3場合

select count(*) from TABLE where date = (select trunc(sysdate [email protected]) from dual) 
@var = 2

以下のようなものにクエリを変更し、それを自動化したいです月曜日に実行中です

+0

'TRUNC (sysdate -var) 'が行います。サブクエリーは必要ありません。あなたはそれを自動化することによって何を意味するか説明できますか?結果をいくつかのテーブルに書き込む予定の仕事が必要なのか、インタラクティブなレポートが必要なのか、それとも何が必要ですか? –

+0

計画は自動化された監視ツールにスクリプトを置き、特定の時間間隔(例えば10時間)後に実行し、結果をメールします – Newbie

+0

変数を提供する方法は、監視ツールによって異なります。このためにどのツールを使用する予定ですか? –

答えて

0

TRUNC(SYSDATE, 'IW')は、ISO週の開始日(月曜日の深夜)までの日付を切り捨てます。 TRUNC(SYSDATE) - TRUNC(SYSDATE, 'IW')は、ISOの週の開始(月曜日= 0、火曜日= 1、...日曜日= 6)ので、完全な日数を与えると、あなただけのCASEステートメントにそれを置くことができます。

select count(*) 
from your_table 
where date_col = TRUNC(SYSDATE) - CASE TRUNC(SYSDATE) - TRUNC(SYSDATE, 'IW') 
            WHEN 0 THEN 3 -- Monday 
            WHEN 6 THEN 2 -- Sunday 
              ELSE 1 -- Other days 
            END 
+0

完璧なおかげです。 – Newbie