Oracle で行を列に変換: DECODE と PIVOT を利用する
問題:
Transformローン番号に関連付けられた複数の文書タイプと ID を列形式で表す行を含むテーブル形式。結果のテーブルには、ローン番号ごとに 1 つの行があり、各文書タイプと対応する ID の列が含まれます。
例:
入力テーブル:
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID |
---|---|---|
992452533663 | Voters ID | XPD0355636 |
992452533663 | Pan card | CHXPS5522D |
992452533663 | Drivers licence | DL-0420110141769 |
必要な出力:
LOAN NUMBER | VOTERS_ID | PAN_CARD | DRIVERS LICENCE |
---|---|---|---|
992452533663 | XPD0355636 | CHXPS5522D | DL-0420110141769 |
Oracle解決策:
DECODE メソッド:
SELECT loan_number, MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id, MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card, MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence FROM input_table GROUP BY loan_number ORDER BY loan_number;
PIVOT 句 (Oracle 11g ):
SELECT * FROM input_table PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
どちらの方法でも行を列に効果的に入れ替えて、望ましい結果を達成します。 Oracle DECODE と PIVOT の詳細については、参照リンクを参照してください。
以上がDECODE と PIVOT を使用して Oracle で行を列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。