需求是这样的,要做个趋势报表,按天或按月统计指定时间范围内的各类型的订单数量,例如
日报         文具    体育用品     书籍
--------------------------------------
2007-06-01    1          2         3
2007-06-02    3          2         1
...月报         文具    体育用品     书籍
-------------------------------------
2007-06    10          20         30
2007-07    30          20         10 表结构(ORDER_INFO)
-------------------------------------
..
类型  ORDER_TYPE(文具,体育用品,书籍)
日期  ORDER_TIME
...我现在的做法是先 from ORDER_INFO group by to_char(ORDER_TIME,'YYYY-MM-DD')
再 left join 各类型订单的 count(*)这样做的缺陷是,如果某天没有任何的订单,那么这一天的记录就不会显示。我希望是 显示0,象这样
日报         文具    体育用品     书籍
--------------------------------------
2007-06-01    1          2         3
2007-06-02    3          2         1
2007-06-02    0          0         0月报也同理.系统表中是否这种完整的日期对照表?这个SQL该怎么写?请大侠们指导,百分感谢~!

解决方案 »

  1.   

    查2007-7月的所有日期
    select to_date('2007-7-1','yyyy-mm-1')+rownum-1 from all_objects where rownum<=31;查2007和2008两年的所有月份
    select to_char(add_months(to_date('2007-1-1','yyyy-mm-1'),rownum-1),'yyyy-mm') from all_objects where rownum<=24;
      

  2.   

    最好的办法就是自己用SQL插入数据到一个日期对照表。然后查询那个表格。如果常用,则更好。
      

  3.   

    感谢楼上 bobfang(匆匆过客) 的帮助,问题已解决。非常感谢。
      

  4.   

     bobfang(匆匆过客) 的,能执行吗,我怎么执行不了啊
      

  5.   

    可以了,原来是打错了哦
    查2007-7月的所有日期 
    select   to_date( '2007-7-1 ', 'yyyy-mm-dd')+rownum-1   from   all_objects   where   rownum <=31; 查2007和2008两年的所有月份 
    select   to_char(add_months(to_date( '2007-1-1 ', 'yyyy-mm-dd'),rownum-1), 'yyyy-mm ')   from   all_objects   where   rownum <=24; 
      

  6.   

    这个左关联的SQL怎么写啊,跟版主的概念是一样的,但我查出查2007-7月的所有日期 ,再做关联到其他表,但其他表的时间是带时分秒的,怎么统计出来啊