CREATE TABLE aa (c1 VARCHAR2(5),c2 VARCHAR2(5));
INSERT INTO aa VALUES('v2','a');
INSERT INTO aa VALUES('v2','b');
INSERT INTO aa VALUES('v2','c');
INSERT INTO aa VALUES('v2','d');
INSERT INTO aa VALUES('v2','e');
COMMIT;
可否按每两笔分组, 效果如下:
"rid" c1 c2
1 v2 a
1 v2 b
2 v2 c
2 v2 d
3 v2 e
----------------------------------------libin_ftsafe(子陌红尘)哥
select 
    decode(MOD(a.rid+1,2),1,a.rid/2,(a.rid+1)/2) as rid, a.c1, a.c2 
from (select ROWNUM as rid,c1,c2 from aa) a
还是有问题, 要是有多笔数据, 按每5笔分组, 用mod就不行吧

解决方案 »

  1.   

    decode(MOD(a.rid+1,5),1,a.rid/5,2,a.rid/5,3,a.rid/5,4,a.rid/5,(a.rid+1)/5)
    可以不?
      

  2.   

    没测试啊,也可以把(a.rid+1)/5)提前,简单点
      

  3.   

    select 
        decode(MOD(a.rid+1,5),1,a.rid/5,2,(a.rid-1)/5,3,(a.rid-2)/5,4,(a.rid-3)/5,(a.rid+1)/5) as rid,
        a.c1,
        a.c2 
    from 
        (select ROWNUM as rid,c1,c2 from aa) a
      

  4.   

    不用管多少筆,直接mod就可以做到
      

  5.   

    select 
        FLOOR((a.rid+1)/5) as rid,
        a.c1,
        a.c2 
    from 
        (select ROWNUM as rid,c1,c2 from aa) a
      

  6.   

    CREATE TABLE aa (c1 VARCHAR2(5),c2 VARCHAR2(5));
    INSERT INTO aa VALUES('v2','a');
    INSERT INTO aa VALUES('v2','b');
    INSERT INTO aa VALUES('v2','c');
    INSERT INTO aa VALUES('v2','d');
    INSERT INTO aa VALUES('v2','e');
    INSERT INTO aa VALUES('v2','f');
    INSERT INTO aa VALUES('v2','g');
    INSERT INTO aa VALUES('v2','h');
    INSERT INTO aa VALUES('v2','i');
    COMMIT;select floor((a.rid-1)/5)+1,a.c1,a.c2 
    from (select ROWNUM as rid,c1,c2 from aa)a
      

  7.   

    libin_ftsafe(子陌红尘) ,的方法正确, 我试过