求助各位大神
求解开始和结束时间之间的所有季度比如 
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
...想了半天不知道怎么搞。

解决方案 »

  1.   

    如果非要用sql硬写,有点麻烦。
    有个简单方法,加个表,里面放着 所有的季度日期
    比如
    2009/03/31
    2009/06/30
    2009/09/30
    2009/12/31   
    2010/03/31
    ……
    然后链接这个表查询就行了 ·
      

  2.   


    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
      

  3.   

    又看了下  貌似to_number()可以去掉的 没用处  round(months_between(endDate,startDate),0)