求助,怎么得到两个日期内的所有日期

[复制链接]
查看11 | 回复7 | 2013-1-29 11:27:26 | 显示全部楼层 |阅读模式
select * from t1;
ID,REC_DATE,CLOSE_DATE
1,2011-1-10,2011-1-11
2,2011-2-20,2011-2-25
3,2011-3-10,2011-3-15
如何能得到下面的结果?
1,2011-01-10
1,2011-01-11
2,2011-02-20
2,2011-02-21
2,2011-02-22
2,2011-02-23
2,2011-02-24
2,2011-02-25
3,2011-03-10
3,2011-03-11
3,2011-03-12
3,2011-03-13
3,2011-03-14
3,2011-03-15

建表的sql如下:
create table T1(
id number,
rec_date date,
close_date date);
SET DEFINE OFF;
Insert into T1
(ID, REC_DATE, CLOSE_DATE)
Values
(1, TO_DATE('01/10/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('01/11/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS');
Insert into L5M.T1
(ID, REC_DATE, CLOSE_DATE)
Values
(2, TO_DATE('02/20/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/25/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS');
Insert into L5M.T1
(ID, REC_DATE, CLOSE_DATE)
Values
(3, TO_DATE('03/10/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/15/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
with temp1 as(
select rownum my_rn from dual
connect by rownum=rec_date and col1<=close_date
order by id,col1
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
正好我最近领悟的内容能帮上LZ你
select id,rec_date+level-1 from t1
connect by prior id=id
and prior dbms_random.value is not null
and rec_date+level-1<=close_date
这个SQL非常简单易懂了吧?哈
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 影之哀伤 于 2011-3-7 10:27 发表
正好我最近领悟的内容能帮上LZ你
select id,rec_date+level-1 from t1
connect by prior id=id
and prior dbms_random.value is not null
and rec_date+level-1

不是很明白这句sql的意思,
我为什么执行不了呢
ORA-01436: CONNECT BY loop in user data
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 6666444 于 2011-3-7 10:24 发表
二楼的答案是错的
with tt1 as
(
select maxd - rownum + 1 col1
from (select max(CLOSE_DATE) maxd, min(REC_DATE) mind from t1)
connect by rownum =rec_date and col1


这句有点靠谱,学习了
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 jolly10 于 2011-3-7 10:30 发表

不是很明白这句sql的意思,
我为什么执行不了呢
ORA-01436: CONNECT BY loop in user data

你用ora是什么版本,10G运行没问题的啊。
我第一次做到一次性写对sql,你还要我写表来做sql测试。。。
ID
REC_DATE+LEVEL-1
1
1/10/2011
1
1/11/2011
2
2/20/2011
2
2/21/2011
2
2/22/2011
2
2/23/2011
2
2/24/2011
2
2/25/2011
3
3/10/2011
3
3/11/2011
3
3/12/2011
3
3/13/2011
3
3/14/2011
3
3/15/2011
回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
原帖由 影之哀伤 于 2011-3-7 10:27 发表
正好我最近领悟的内容能帮上LZ你
select id,rec_date+level-1 from t1
connect by prior id=id
and prior dbms_random.value is not null
and rec_date+level-1



回复

使用道具 举报

千问 | 2013-1-29 11:27:26 | 显示全部楼层
REF: http://lastwinner.itpub.net/post/7102/260759
3.2 根据号段求出包含的数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行