Oracle データベースは、データを行から列に再構築するための多用途の手法 (ピボットと呼ばれるプロセス) を提供します。この変換は、データが狭い形式で編成されており、それをより広いビューで表示する必要がある場合に必要になります。
行から列への変換を実行するために、Oracle では 2 つのメソッドが提供されています。
以前のバージョンの Oracle (10g) では、DECODE 関数を使用してピボットを実現できます。次のテーブル構造を考えてみましょう。
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID |
---|---|---|
992452533663 | Voters ID | XPD0355636 |
992452533663 | Pan card | CHXPS5522D |
992452533663 | Drivers licence | DL-0420110141769 |
このデータをピボットするには、次のように 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 doc_tab GROUP BY loan_number ORDER BY loan_number;
このクエリはローン番号ごとにデータをグループ化し、ネストされた DECODE を使用します。特定の文書タイプに文書 ID を割り当てる関数。 MAX 関数は、ローンと文書の組み合わせごとに必要な単一の値を返します。
Oracle 11g では、行から列への変換を簡素化するために専用の PIVOT 句が導入されました。次のクエリは、その使用法を示しています。
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
このクエリの PIVOT 句は、変換された結果で作成される列を明示的に定義します。指定されたドキュメント タイプに基づいてデータが自動的にグループ化され、一致するドキュメント ID が結合されます。
Oracle のピボット手法の詳細については、以下のリソースを参照してください。
以上がOracle で行を列にピボットする方法: DECODE と PIVOT?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。