orcle分析函式

2022-03-08 17:27:33 字數 1514 閱讀 1532

一、問題描述:

關務裡拆分清單時要求:合併同一表頭對應表體的 項號、幣制、產銷國(地區),將三個字段相同的資料歸為一項,並生成乙個遞增的商品序號。從1開始。

解決方法:(dense_rank分析函式)

select to_number(dense_rank() over (partition by head_oid order by head_oid,em_g_no,curr,country_code)) as id

from gw_customs_bill_list_pre;

row_number()和rownum差不多,功能更強一點(可以在各個分組內從1開時排序)  不存在相同序號 如: 1,2,3,4

rank()是跳躍排序,有兩個第二名時接下來就是第四名(同樣是在各個分組內)  如:1 ,2 ,2 ,4

dense_rank()l是連續排序,有兩個第二名時仍然跟著第三名。 如:1 ,2 ,2 ,3

partition by:分組條件,就是按哪些字段進行分組

order by:組內排序

二、問題描述

問題描述:b表:為幣制表,有 幣制、日期 字段,同乙個幣制在不同時期的匯率是不一樣的;

a表:有 總價、幣制、申報日期 字段。

要求:a表根據幣制關聯b表取匯率,將總價轉換成美元總價。

幣制取匯率方法:

第一步(關聯):關聯幣制得出記錄(a的1條記錄對就多條b的記錄,結果字段:a.申報日期,a.幣制,b.日期,b.匯率)

第二步(篩選):篩選出a表的申報日期大於b表日期(匯率對應的日期必須在申報日期之前:b.日期<a.申報日期)

第三步(取匯率):同一幣制取b表中最晚日期對應的匯率。

解決方法:(分析函式)

select distinct a.oid, a.curr,a.dec_total,a.inserttime,b.org_curr,b.input_er,

a.dec_total/( first_value(b.tax) over(partition by b.org_curr order by b.eff_date desc)) from gw_customs_bill_list_pre a,

gw_info_tax b where a.curr=b.org_curr and a.inserttime>b.eff_date

語法:first_value(取值字段) over(partition by 分組字段 order by 排序字段)) from 表名

按「分組字段」進行分組,排「排序字段」排序,

first_value()取出「取值字段」記錄中最大的值。

三、按關健字分組,排序後,加序號。

select exchange_rate_date, base_curr, change_curr,

row_number() over(partition by exchange_rate_date, base_curr, change_curr order by modify_date) id

from bi_exchange_rate

Orcle設定編碼

昨天幫海關的技術人員培訓我門公司的平台,由於平台依賴orcle資料庫中的平台表,所以需要匯入dmp檔案,後來發現中文全是亂碼,後來在網上查資料總結了修改orcle資料庫字符集編碼的方法,修改完了需要重新匯入dmp檔案就不會亂碼了 先用system和密碼登陸sqlplus,然後 1.用sys登入到or...

Orcle 分頁查詢

select from select from select info.id,info.age,info.address,row number over order by info.id asc as row number from test tb.info where info.id 0 orde...

ORCLE匯出資料

方法一 exp scf sit tgt scf sit tgt 10.20.35.117 1521 fgdbat file e data 20200108 scf.dmp owner scf sit tgt 方法二 expdp scf sit tgt scf sit tgt 10.20.35.117...