データをOracleファイルからファイルにコピーする必要がありました。ROW_NUMBER()は正しくレコードを順序付けしていません
私は200kを含む4つのファイルを生成するためにorder by節と共にrow_number()関数を使用して800kレコードをフェッチする結合クエリを持っています。
問合せ:
SELECT * FROM (
SELECT ROW_NUMBER() OVER (order by FILE_KEY desc) rn,
FILE_KEY, ROUTING_NO, INTLROUT_TYPE, ABBR_COUNTRY_CODE_2D, HO_CATALOG_NO
FROM BANK_INTL_ROUT_TBL rout, BANK_INTL_LOC_TBL loc
WHERE loc.CATALOG_NO = rout.FILE_KEY)
WHERE rn BETWEEN start AND end;
パラメータ:
For 1st File : start =1 ,end = 200000
For 2nd File : start =200001 ,end = 400000
For 3rd File : start =400001 ,end = 600000
For 4th File : start =600001 ,end = 800000
しかしシーケンスである私は、SQLクエリブラウザでこのクエリを使用して、最後の10行をチェックし、ファイルの最後の10行が異なる場合で異なっていますファイルとSQLクエリブラウザ。
SELECT * FROM (
SELECT ROW_NUMBER() OVER( order by FILE_KEY desc) rn,
FILE_KEY,ROUTING_NO,INTLROUT_TYPE,ABBR_COUNTRY_CODE_2D,HO_CATALOG_NO
FROM BANK_INTL_ROUT_TBL rout, BANK_INTL_LOC_TBL loc
WHERE loc.CATALOG_NO=rout.FILE_KEY)
WHERE rn BETWEEN 709990 AND 80000;
どのテーブルがマスターであり、どのテーブルが詳細ですか? BANK_INTL_LOC_TBLが詳細である場合、同じFILE_KEYが結果セット内に複数回存在する可能性はありますか? –
はいBANK_INTL_LOC_TBLは詳細でFILE_KEYは2回以上です –
クエリで 'order by'句が指定されていないと、ファイルに書き込まれる行は' row_number() 'の順序とは異なる順序になる可能性があります。したがって、一意のキーを使用するように修正されたときに最後にクエリを実行すると、**ファイルの最後の10行が得られない場合がありますが、ファイルのどこかに10行しか存在しません。 –