请问下,想用一个SQL实现按周分组功能. 
给定一段时间,我想以开始时间(开始日期不管周几都可以)按周分组,例如给定09年2月3号到2月23号,那么就按3号到9号,10号到16号...这么分组统计 
不知是否可以实现下面这样,统计值为零的也占一行 周数  日期            统计值 
1    02/03-02/09      0 
2    02/10-02/16      100 
3  ... 
多谢

解决方案 »

  1.   

    Select Weeks 周数 
    ,to_char(To_Date('2009-02-03', 'YYYY-MM-DD') + 7 * (Weeks - 1),'MM/DD')||'-'||to_char(To_Date('2009-02-03', 'YYYY-MM-DD') + 7 * Weeks-1 ,'MM/DD') 日期 
    ,Sumresults 统计值 
    From (Select Trunc((Hiredate - To_Date('2009-02-03', 'YYYY-MM-DD')) / 7) + 1 Weeks 
    ,Sum(Empno) Sumresults 
    From Scott.Emp 
    Group By Trunc((Hiredate - To_Date('2009-02-03', 'YYYY-MM-DD')) / 7) + 1); 
    以上sql在Scott用户下调试过。 
    Hiredate换成你需要计算的日期字段,empno换成你需要计算的字段,from 子句换成你的表和查询条件。 
     
     
      

  2.   

    参考:
    很急的问题 按周统计和按月统计的问题
    http://topic.csdn.net/t/20060223/15/4573067.html
      

  3.   

    SELECT   to_char(日期,'yyyymm') 年月,'第'||to_char(日期,'w')||'周'  周,
    COUNT(*)   统计值     
    FROM   tb   
    GROUP   BY   to_char(日期,'yyyymm'),to_char(日期,'w');