oracle
Input Date
およびFrequency(Yearly,half yearly, Quarterly)
に基づいて次の日付を計算する関数またはプロシージャを探しています。例えばPL/SQL - 頻度に基づく日付
Input Date Frequency Next Occurrence Date
1-Jan-2016 Quarterly 1-Apr-2016
1-Jan-2016 yearly 1-Jan-2017
oracle
Input Date
およびFrequency(Yearly,half yearly, Quarterly)
に基づいて次の日付を計算する関数またはプロシージャを探しています。例えばPL/SQL - 頻度に基づく日付
Input Date Frequency Next Occurrence Date
1-Jan-2016 Quarterly 1-Apr-2016
1-Jan-2016 yearly 1-Jan-2017
月次、四半期、年間の結果を得るためにOracleの機能ADD_MONTHS(date, number_months)
を見てみましょう。
たとえば、次の四半期は3か月になります。したがって、入力日が第1四半期の場合は、次の四半期には
ADD_MONTHS(01-JAN-2016, 3)
を取得することができます。
例SQL:
select TO_DATE('01-JAN-2016', 'DD-MON-YYYY') as "Input Date",
'Quarterly' as "Frequency",
ADD_MONTHS(TO_DATE('01-JAN-2016', 'DD-MON-YYYY'), 3) as "Next Occurrence Date"
from dual
union
select TO_DATE('01-JAN-2016', 'DD-MON-YYYY') as "Input Date",
'Yearly' as "Frequency",
ADD_MONTHS(TO_DATE('01-JAN-2016', 'DD-MON-YYYY'), 12) as "Next Occurrence Date"
from dual
;
結果:@のtale852150の答えを拡張
Input Date Frequency Next Occurrence Date
------------------ --------- ------------------
01-JAN-16 Quarterly 01-APR-16
01-JAN-16 Yearly 01-JAN-17
ビット、あなたはあなたを想定し、追加する月数に周波数を変換する場合の表現を使用することができます可能な値のリストが知られています:
add_months(input_date, case frequency
when 'Quarterly' then 3
when 'Half yearly' then 6
when 'Yearly' then 12 else 0 end
クイックデモ:
with t (input_date, frequency) as (
select date '2016-01-01', 'Quarterly' from dual
union all select date '2016-01-01', 'Half yearly' from dual
union all select date '2016-01-01', 'Yearly' from dual
)
select input_date, frequency,
add_months(input_date, case frequency
when 'Quarterly' then 3
when 'Half yearly' then 6
when 'Yearly' then 12 else 0 end) as next_occurrence_date
from t;
INPUT_DATE FREQUENCY NEXT_OCCURRENCE_DATE
---------- ----------- --------------------
2016-01-01 Quarterly 2016-04-01
2016-01-01 Half yearly 2016-07-01
2016-01-01 Yearly 2017-01-01