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只能得到一条数据
展开
 我来答
badkano
推荐于2016-05-04 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885372
团长

向TA提问 私信TA
展开全部

为了保证有跨月数据的产生,我在你基础上多加了条数据

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

结果

tj_angela
2014-07-16 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2589万
展开全部
select t1.id,t2.v_date
from (select to_date('20140101','YYYYMMDD')+rownum as v_date from user_objects where rownum<=1000) as t2,
T1
where t2.v_date between t1.startdate and t1.enddate
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式