一、問題描述:
關務裡拆分清單時要求:合併同一表頭對應表體的 項號、幣制、產銷國(地區),將三個字段相同的資料歸為一項,並生成乙個遞增的商品序號。從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...