有如下表
A1,A2
B   D
E   D
A   C
F   C
C   A
D   A排序的结果为
A  C
F  C
B  D
E  D
C  A
D  A
即,A2列要按照块来排列。块的排列顺序为A1的值。我写的这个比较简单,A1值是经过很复杂的方法得到的,很难计算出来块内的A1最大值。

解决方案 »

  1.   

    解释一下吧 ,为什么a2是 c->d>a
      

  2.   

    简单。
    select a1,a2
    from tb
    order by a2 ,a1
      

  3.   

    WITH test AS
    (
    select 'B' as a1,  'D' as a2 from dual union 
    select 'E' as a1,  'D' as a2 from dual union 
    select 'A' as a1,  'C' as a2 from dual union 
    select 'F' as a1,  'C' as a2 from dual union 
    select 'C' as a1,  'A' as a2 from dual union 
    select 'D' as a1,  'A' as a2 from dual 
    )SELECT A1,A2  FROM TEST
    ORDER BY MIN(A1) OVER(PARTITION BY A2),A1A1 A2
    A C
    F C
    B D
    E D
    C A
    D A
      

  4.   

    楼主自己测一下
    主要是 MIN(A1) OVER(PARTITION BY A2) 要能取到最小值