【发布时间】:2017-04-01 19:47:07
【问题描述】:
我有一个包含日期和值的表格,例如:
START_DATE VALUE
------------ -----
01-JAN-2015 A
01-MAR-2015 B
01-AUG-2015 (null)
15-AUG-2015 A
01-SEP-2015 C
01-JAN-2016 B
01-JUN-2016 C
每个 start_date 代表值更改的日期。 我正在尝试获取包含结束日期作为下一个日期(按时间顺序)减去一天的输出,即:
START_DATE END_DATE VALUE
---------- ---------- -----
01-JAN-2015 28-FEB-2015 A
01-MAR-2015 31-JUL-2015 B
01-AUG-2015 14-AUG-2015 (null)
15-AUG-2015 31-AUG-2015 A
01-SEP-2015 31-DEC-2015 C
01-JAN-2016 31-MAY-2016 B
01-JUN-2016 (null) C
我可以使用查询来获取每个间隔的开始和结束日期吗?...也许使用分层查询?
这里是我在开发过程中使用的一个可以节省一些时间的摘录:
with my_table
as(
select to_date('01-JAN-2015') start_date,'A' value from dual
union
select to_date('01-MAR-2015') start_date,'B' value from dual
union
select to_date('01-AUG-2015') start_date,'' value from dual
union
select to_date('15-AUG-2015') start_date,'A' value from dual
union
select to_date('01-SEP-2015') start_date,'C' value from dual
union
select to_date('01-JAN-2016') start_date,'B' value from dual
union
select to_date('01-JUN-2016') start_date,'C' value from dual
)
select ...
【问题讨论】:
-
您是如何获得 30-APR 作为第一行的 end_date 的?下一行的 start_date 是 01-MAR 什么时候?
-
谢谢@mathguy...正确的结束日期应该是 28_FEB-2015。帖子已更正。