需要写一个查询语句:select to_char(date,'yyyy-mm-dd'),
                           count(num) 
                    from tmp_t 
                    where to_char(date,'yyyy-mm-dd') between begintime and endtime
                    group by to_char(date,'yyyy-mm-dd')现在的情况是tmp_t表中在该时间段内可能并没有连续的数据
而我需要的是在该日没有数据的时候(即关于改日的行不存在)查询结果能够这样:
yyyy-mm-dd   5
yyyy-mm-dd
yyyy-mm-dd   4 ////////////////////////////////////////tmp_t////////////////////////////
日期              数量
yyyy-mm-dd         4 
.........

解决方案 »

  1.   


    --将条件格式统一下
    select to_char(date,'yyyy-mm-dd'), 
                        count(num) 
                        from tmp_t 
                        where to_date(to_char(date,'yyyy-mm-dd'),'yyyy-mm-dd') 
                        between to_date(begintime,'yyyy-mm-dd')  
                        and to_date(endtime,'yyyy-mm-dd')  
                        group by to_char(date,'yyyy-mm-dd') 
      

  2.   

    select t1.days, count(t2.num) 
    from ( select to_date(begintime,'yyyy-mm-dd') + rownum days from all_objects
           where rownum <= to_date(endtime,'yyyy-mm-dd') - to_date(begintime,'yyyy-mm-dd')) t1
         , tmp_t t2 
    where  t1.days = t2.date(+) 
    group by t1.days;
      

  3.   

    2楼时间有点出入,修改以下:
    select t1.days, count(t2.num) 
    from ( select to_date(begintime,'yyyy-mm-dd')-1 + rownum days from dual 
           connect by rownum <=to_date(endtime,'yyyy-mm-dd')-to_date(begintime,'yyyy-mm-dd')+1) t1
         , tmp_t t2 
    where  t1.days = t2.date(+) 
    group by t1.days;
      

  4.   

    shiyiwan,不好意思,想问一下能不能begintime也显示在查询结果里,现在的情况是只能显示从开始时间开始的第二天的日期。
    多谢赐教!!
      

  5.   

    shiyiwan真高人也!!我都还没问,问题就已解决了!
      

  6.   


    请问shiyiwan,select to_date(begintime,'yyyy-mm-dd')-1+ rownum daysfrom dual 
           connect by rownum<=to_date(endtime,'yyyy-mm-dd')-to_date(begintime,'yyyy-mm-dd')+1,这个语句测试不成功啊,connect by出错
    我一直想写个这样的语句,就是没法实现
      

  7.   

    你的oracle版本是不是10G或以下?如果是那dual表用connect by是不行的那种情况可以考虑用all_objects代替,因为这个表里面的记录至少有上万条,不用担心天数不够用
      

  8.   

    版本问题,装了11g就成功了
    原来用的是9i
    谢谢shiyiwan
    哈哈