with tb(a,b)as(
select 3,7 from dual union all
select 7,3 from dual
)
select case when a>b then (a-b)/b*100||'%' 
else (b-a)/a*100||'%' end from tb大概就是这个意思,细节自己去调吧

解决方案 »

  1.   

    那就用max 除以  min 就行了
      

  2.   

    如在同一行 用greatest和least取最大最小,然后处理
    不在同一行用max和min取最大最小,然后处理
      

  3.   

    SQL> select abs(1-2)/greatest(1,2) from dual;ABS(1-2)/GREATEST(1,2)
    ----------------------
                        .5SQL> select abs(1-3)/greatest(1,3) from dual;ABS(1-3)/GREATEST(1,3)
    ----------------------
                .666666667SQL> select abs(a-b)/greatest(a,b) from dual;
      

  4.   

    以下例子select (max(a)-min(a))/max(a)
    from (select 1 a from dual
    union all select 4 from dual)