ORACLE按照兩列中最大值進行排序

2022-04-09 08:43:41 字數 1462 閱讀 2456

oracle按照兩列中最大值進行排序

假設有下面的一張表:

[sql] 

create table foo(  

www.2cto.com  

fooid   number(10),  

firstcol    number(10),  

secondcol number(10)  

);  

為了方便測試,隨機產生一些資料:

[sql] 

declare  www.2cto.com  

n_fooid foo.fooid%type;  

n_firstcol foo.firstcol%type;  

n_second foo.secondcol%type;  

begin  

n_fooid :=0;  

delete from foo;  

for i in 0 .. 200 loop  

n_fooid := n_fooid+1;  

select trunc(dbms_random.value(0, 200)),  

trunc(dbms_random.value(0, 200))  

into n_firstcol,n_second  

from dual;  

insert into foo(fooid,firstcol,secondcol)  

values(n_fooid,n_firstcol,n_second);  

end loop;  

end;  

下面是生成的資料:

[sql] 

fooid   firstcol  secondcol  

1 1    19  

2 134  172  

3 25   176  

4 99   56  

5 41   17  

6 65   55  

7 73   0  

www.2cto.com  

要求: 需要按照firstcol與secondcol中的最大值進行排序。

第乙個解決方案:

[sql] 

select *   

from foo t  

order by (case when t.firstcol>t.secondcol then t.firstcol else t.secondcol end);  

第二個解決方案:

[sql] 

select *  

from foo t  

order by greatest(t.firstcol,t.secondcol);  

第二個方案明顯要比第一種寫法好很多,如果是在多列的情況下進行比較,因為總不可能寫n多的case when then else end來進行多行的取最大值。看來oracle總是比我們考慮的多一些,因此提供了greatest這個函式。

ORACLE按照兩列中最大值進行排序

假設有下面的一張表 create table foo fooid number 10 firstcol number 10 secondcol number 10 為了方便測試,隨機產生一些資料 declare n fooid foo.fooid type n firstcol foo.firstc...

求陣列中最大值

所有c語言 都是在loadrunner中執行 action 定義乙個int陣列 int len 記錄陣列元素個數 int max 所求的最大值 int i 迴圈變數 loadrunnerg中,不能在for迴圈中定義變數 len sizeof a sizeof int 陣列元素個數 陣列所佔字元數 陣...

oracle多列最大值的sql

select id,r,sr,kbn from select distinct id row number over partition by id order by r desc rn,row number over partition by id,r order by sr desc rn2,r...