Oracle一个表存有一个日期段,怎么根据这个日期段获取该段时间的每天一条数据?
有一个表T1,结构和数据如下IDStartDateEndDate12014-7-12014-7-322014-8-42014-8-5我想得到下面的结果12014-7-11...
有一个表T1,结构和数据如下
ID StartDate EndDate
1 2014-7-1 2014-7-3
2 2014-8-4 2014-8-5
我想得到下面的结果
1 2014-7-1
1 2014-7-2
1 2014-7-3
2 2014-8-4
2 2014-8-5
试了connect by ,总是得不到想要的效果,1能够正确获取,但是2只能得到一条数据 展开
ID StartDate EndDate
1 2014-7-1 2014-7-3
2 2014-8-4 2014-8-5
我想得到下面的结果
1 2014-7-1
1 2014-7-2
1 2014-7-3
2 2014-8-4
2 2014-8-5
试了connect by ,总是得不到想要的效果,1能够正确获取,但是2只能得到一条数据 展开
展开全部
为了保证有跨月数据的产生,我在你基础上多加了条数据
create table t1
(id int,
startdate date,
enddate date)
insert into t1 values (1,to_date('2014-07-01','yyyy-mm-dd'),to_date('2014-07-03','yyyy-mm-dd'));
insert into t1 values (2,to_date('2014-08-04','yyyy-mm-dd'),to_date('2014-08-05','yyyy-mm-dd'));
insert into t1 values (3,to_date('2014-07-30','yyyy-mm-dd'),to_date('2014-08-02','yyyy-mm-dd'));
执行
select s1.id,s1.startdate+s2.rn
from
(select t1.id,t1.startdate,t1.enddate-t1.startdate datevalue from t1) s1,
(select rownum-1 rn from dual connect by rownum<=(select max(enddate-startdate)+1 from t1)) s2
where s2.rn<=s1.datevalue
order by s1.id,s1.startdate+s2.rn
结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询