求助各位大神
求解开始和结束时间之间的所有季度比如
ID startDate endDate
a 2009/01/15 2010/02/15
b 2011/12/31 2012/04/06
...那么输出结果为:ID quarter
a 2009/03/31
a 2009/06/30
a 2009/09/30
a 2009/12/31
b 2011/12/31
b 2012/03/31
...想了半天不知道怎么搞。
求解开始和结束时间之间的所有季度比如
ID startDate endDate
a 2009/01/15 2010/02/15
b 2011/12/31 2012/04/06
...那么输出结果为:ID quarter
a 2009/03/31
a 2009/06/30
a 2009/09/30
a 2009/12/31
b 2011/12/31
b 2012/03/31
...想了半天不知道怎么搞。
有个简单方法,加个表,里面放着 所有的季度日期
比如
2009/03/31
2009/06/30
2009/09/30
2009/12/31
2010/03/31
……
然后链接这个表查询就行了 ·
create table t1 (id varchar2(5),startDate date,endDate date);insert into t1 values ('a',date'2009-01-15',date'2010-02-15');
insert into t1 values ('b',date'2011-12-31',date'2012-04-06');
commit;
select id,max(mon) mon
from
(select id, add_months(startDate,level-1) mon
from t1
connect by level <= round(to_number(months_between(endDate,startDate)),0)+1
order by mon) t2
group by id,to_char(mon,'q')
order by id id mon
------------------------------
1 a 2010/2/15
2 a 2009/6/15
3 a 2009/9/15
4 a 2009/12/15
5 b 2012/3/31
6 b 2011/12/31