我有一个包含日期和值的表格,如:
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 ...
答案 0 :(得分:2)
TableModel
答案 1 :(得分:-2)
试试这个
使用AS(选择ROWNUM作为RN,A。*来自SALESNEW A)
SELECT X.START_DATE,Y.START_DATE-1 AS END_DATE,X.VALUE from A X,A Y 在哪里(当X.RN> = 1然后X.RN + 1结束时的情况)= Y.RN(+);