1. 程式人生 > >oracle分組排序+建表無效字元+按固定順序排序

oracle分組排序+建表無效字元+按固定順序排序

一、oracle分組後排序,取每組第一條資料

根據COL1欄位分組,然後每組按COL2排序取最大的那一條
SELECT *      
    FROM (SELECT ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2 DESC) rn,      
          test1.*      
          FROM test1)      
   WHERE rn = 1  ; 

二、建表包含特定字元(無效的字串)

用""號把特殊欄位的字元包起來,即可
--create table
create table test111
(A varchar2(20),
"access" varchar2(20),
 B varchar2(20)
)
comment on column test111.A
  is 'A';
comment on column test111."access"
  is 'A';
comment on column test111.B
  is 'B'; ORACLE呼叫時:select T."ACCESS" from OCRM_F_PD_PROD_INFO t 三、按照固定值的排序:Oracle中排序如何指定某些值在最前或最後
欄位(COL1)值為 1,2,3,4,現需按這個欄位按值 3,1,4,2 排序
方法一:
select * from test_table
order by decode(col1,'3','1','1','2','4','3','2','4')
替換後的數字可以自己選,保證順序即可
方法二:
select  * from test_table
order by replace(id,'4','1')
但replace每次只能替換一種,需要巢狀replace如replace(replace(...)...)
方法三:
使用迴圈(for,case都可以) order by case when '3' then '1' when '1' then '2'
           case when '4' then '3' when '2' then '4'
     end as col