求助 SQL分组查询 
现在有记录行为:
序号 名称
1 A
2 A
3 B
4 B
5 A
6 A
7 D
8 D
想得到的结果为:
1-2 A
3-4 B
5-6 A
7-8 D
请问SQL语句如何写?谢谢大家!!!

解决方案 »

  1.   

    select min(a)||'-'||max(a),b
    (select a,b,row_number()over(partition by b order by a)-a rn
    from tablename) oth
    group by b,rn
    order by oth.a
      

  2.   

    那个order by子句是有问题的
    select min(a)||'-'||max(a),b
    (select a,b,row_number()over(partition by b order by a)-a rn
    from tablename) oth
    group by b,rn
    order by min(a)
      

  3.   

    说 实话,很久没碰ORACLE了,有些生疏了。
    如果不要order by应该是可以过的吧。可能我order by有问题!
    再就是这个语句是要在ORACLE 9I以上版本才能执行通过。
    主要是楼主能看懂我处理的思路就好。
      

  4.   

    用row_number()over(partition by * order by *)即可解决!
      

  5.   

    TO sbaz(万神渡劫) :
    谢谢大哥解决了!
    但再请教一下,下面的如何写:
    现在有记录行为:
    序号 名称  数量
    1     A     1
    2     A     2
    3     B     4
    4     B     4
    5     A     5
    6     A     5
    7     D    10
    8     D    10 
    想得到的结果为:
    1-2 A  3
    3-4 B  8
    5-6 A  10
    7-8 D  20 
    请问SQL语句如何写?谢谢大家!!!
      

  6.   

    select min(a)||'-'||max(a),b,sum(c)
    (select a,b,row_number()over(partition by b order by a)-a rn
    from tablename)
    group by b,rn