我有一个会员月结束日期列。根据这一栏,我将计算财政开始日期前12个月,财政开始日期前24个月等等。
我不能在这里使用add_months函数,如下所示是fscl月结束日期。当用户选择2017年7月1日时,12个月前的日期应从03年7月3日开始。
如果我使用添加月份,则日期范围将更改为2016年7月1日至2017年7月1日,但我需要将其作为2017年7月3日至2017年7月1日。
FISCAL MONTH END DATES
30-JAN-16
27-FEB-16
02-APR-16
30-APR-16
28-MAY-16
02-JUL-16
30-JUL-16
27-AUG-16
01-OCT-16
29-OCT-16
26-NOV-16
28-JAN-17
25-FEB-17
01-APR-17
29-APR-17
27-MAY-17
01-JUL-17
答案 0 :(得分:0)
考虑到您的表中包含序列中的所有日期,您可以将LAG函数与参数11一起使用(即序列中的第11个日期)。将where子句中的用户输入作为绑定变量。 (WHERE TO_CHAR(DT,'DD-MON-YY')=:curr_fiscal_end_dt)
SELECT Prev_fisc_start_date FROM
(
SELECT DT, LAG(DT, 11 ) OVER ( ORDER BY DT ) + 1 Prev_fisc_start_dt FROM
Your_table
) WHERE TO_CHAR(DT,'DD-MON-YY') ='01-JUL-2017';