select c.name,c.outdate,d.indate from 
      (select rownum rn,a.name,a.outdate from your_table a) c ,
      (select rownum rn,b.name,b.indate from your_table b) d
where c.rn=d.rn(+)+1
and   c.name = d.name  

解决方案 »

  1.   

    --example
    SQL> select * from bao_temp order by col1,col2 desc
      2  /COL1             COL2        SEQ
    ---------- ---------- ----------
    A                  31          1
    A                  21          2
    A                  11          3
    B                  45          1
    B                  31          2
    B                  21          3
    B                  11          4
    C                  78          1
    C                  31          2
    C                  21          3
    C                  11          4選取了 11 列目前歷時: 00:00:00.78
    -------------------------------------------------------
    SQL> select c.col1,c.seq,d.col2 from 
      2        (select rownum rn,a.col1,a.seq from bao_temp a) c ,
      3        (select rownum rn,b.col1,b.col2 from bao_temp b) d
      4  where c.rn=d.rn(+)+1
      5  order by col1,col2 desc
      6  /COL1              SEQ       COL2
    ---------- ---------- ----------
    A                   1
    A                   3         31
    A                   2         11
    B                   4         21
    B                   2         21
    B                   1         21
    B                   3         11
    C                   1         45
    C                   2         31
    C                   4         31
    C                   3         11選取了 11 列目前歷時: 00:00:00.09
      

  2.   

    上面的例子有點問題,不需要排序的,
    而且應該用c.rn=d.rn(+)-1;
    ------------------------------------
    SQL> select * from bao_temp
      2  /COL1             COL2        SEQ
    ---------- ---------- ----------
    A                  31          1
    A                  11          3
    A                  21          2
    B                  11          4
    B                  21          3
    B                  31          2
    C                  31          2
    C                  11          4
    C                  21          3
    B                  45          1
    C                  78          1選取了 11 列目前歷時: 00:00:00.94
    SQL> select c.col1,c.seq,d.col2 from 
      2        (select rownum rn,a.col1,a.seq from bao_temp a) c ,
      3        (select rownum rn,b.col1,b.col2 from bao_temp b) d
      4  where c.rn=d.rn(+)-1
      5  /COL1              SEQ       COL2
    ---------- ---------- ----------
    A                   1         11
    A                   3         21
    A                   2         11
    B                   4         21
    B                   3         31
    B                   2         31
    C                   2         11
    C                   4         21
    C                   3         45
    B                   1         78
    C                   1選取了 11 列目前歷時: 00:00:00.25
      

  3.   

    感谢baojianjun(包子)给的思路,虽然还是没能达到我的要求,但根据你的思路我已经得出那条sql语句,再次表示感谢谢!
    sql具体实现下方法如下:
    table名为:temp_date
    数据如下:
           names         indate              outdate           rowid
    A 2005-1-2 6:01:07 2005-1-2 6:02:01 AAAHrXAAJAAAAAKAAA
    A 2005-1-2 6:05:07 2005-1-2 6:10:01 AAAHrXAAJAAAAAKAAB
    A 2005-1-2 6:16:01 2005-1-2 6:19:01 AAAHrXAAJAAAAAKAAC
    A 2005-1-2 6:25:02 2005-1-2 6:30:01 AAAHrXAAJAAAAAKAAD
    B 2005-1-2 6:05:07 2005-1-2 6:10:01 AAAHrXAAJAAAAAKAAE
    B 2005-1-2 6:16:01 2005-1-2 6:19:01 AAAHrXAAJAAAAAKAAF
    A 2005-1-2 6:00:07 2005-1-2 6:01:01 AAAHrXAAJAAAAAKAAGsql语句为:
    SELECT c.names,d.outdate,c.indate FROM
    (SELECT ROWNUM rn,a.names,a.indate FROM (SELECT e.names,e.indate FROM temp_date e ORDER BY e.names,e.outdate) a) c,
    (SELECT ROWNUM rn,b.names,b.outdate FROM (SELECT f.names,f.outdate FROM temp_date f ORDER BY f.names,f.outdate) b) d
    WHERE d.rn=c.rn-1
    AND c.names = d.names得到的数据内容为:
    names        outdate            indate
    A 2005-1-2 6:01:01 2005-1-2 6:01:07
    A 2005-1-2 6:02:01 2005-1-2 6:05:07
    A 2005-1-2 6:10:01 2005-1-2 6:16:01
    A 2005-1-2 6:19:01 2005-1-2 6:25:02
    B 2005-1-2 6:10:01 2005-1-2 6:16:01再次表示感谢!现在给分baojianjun(包子):20