我从一张表里面取出一列,然后给这一列的每一个列值填充上一个对应的日期,日期的开始结束时间由参数给出。日期递增,步长为1天。
我原表取出的字段为
工号   
000001
000002
000003
000004
输入参数日期 2008-06-01  到2008-06-03 要实现的结果是
工号              日期
000001          2008-06-01
000001          2008-06-02
000001          2008-06-03
000002          2008-06-01
000002          2008-06-02
000003          2008-06-03
……请问在oracle中如何实现   

解决方案 »

  1.   


    如果是你写的结果,不需要存储过程,一条SQL就行了先用起始日期和结束日期生成总的日期天数,然后来个笛卡尔积就行了
      

  2.   

    假设A表的A 列
    输入日期为:start_day 结束日期为:end_dayselect a.a,b.dates
         from a,
               ( select :start_day+rownum-1 dates
                       from dual
                       connect by rownum<=:end_day-:start_day+1
                ) b
      

  3.   

    估计是这样工号              日期 
    000001          2008-06-01 
    000001          2008-06-02 
    000001          2008-06-03 
    000002          2008-06-01 
    000002          2008-06-02 
    000002          2008-06-01 
    ....
    SELECT t1.工号, t2.dat
      FROM (SELECT 工号, 1 rn FROM t) t1
      LEFT JOIN (SELECT to_date('2008-06-01', 'yyyy-mm-dd') + rownum - 1 dat
                       ,1 rn
                   FROM dual
                 CONNECT BY rownum <= to_date('2008-06-03', 'yyyy-mm-dd') -
                            to_date('2008-06-01', 'yyyy-mm-dd') + 1) t2 ON t1.rn = t2.rn
      

  4.   

    to:hebo 
    select a.a,b.dates
         from a,
               ( select :start_day+rownum-1 dates
                       from dual
                       connect by rownum<:end_day-:start_day+1
                ) b
    要把<=改成= ??