现在又一张表,主键是id 和 日期
我要出一张报表,显示数据形式为
id  日期          xxxxxxxxx
1   2008-02-01  aaaa
1   2008-02-02  bbbb
1   2008-02-03  null(数据库中没有数据的场合)
............如果参数是id,和日期  日期到月:比方2008-02
如何写才能求得上面的数据集合,而且 如果 2008-02-03在数据库中没有数据,要用null来代替。
不知道我说明白没有,总之,条数是28或29(闰年场合)或30或31这四种情况固定

解决方案 »

  1.   


    select t.id, t1.d, t.xx
      from t,
           (select to_date('20080101', 'yyyymmdd') + rownum - 1 d
              from all_objects
             where rownum <= to_char(to_date('20081231', 'yyyymmdd'), 'ddd')) t1
     where t1.d = trunc(t.dd(+), 'dd')
      

  2.   

    已知月份,获取该月所有日期适合版本:9i以上SELECT to_date('月份'||ROWNUM,'mmdd')
    FROM Dual
    CONNECT BY ROWNUM <= to_char(last_day(to_date('月份','mm')),'dd')
      

  3.   

    select t.id, t1.d, t.xx
          from t,
               (select to_date('200803', 'yyyymm') + rownum - 1 d
                  from all_objects
                 where rownum <=
                       to_char(last_day(to_date('200803', 'yyyymm')),
                                        'dd')) t1
         where t1.d = trunc(t.dd(+), 'dd')
      

  4.   

    这个直接用'月份'||rownum好象有问题,因为rownum<10时,转to_date会有问题,改下SELECT TO_DATE('200810', 'YYYYMM') + ROWNUM - 1
      FROM DUAL
    CONNECT BY ROWNUM <= TO_CHAR(LAST_DAY(TO_DATE('200810', 'YYYYMM')), 'DD')