ホームページ >データベース >mysql チュートリアル >Oracle で行を列に効率的に変換するにはどうすればよいですか?
複数の行と列を含むテーブル データを、より読みやすい列構造に変換するという課題に直面していますか? Oracle データベースは、このタスクを簡素化するための強力な手法を提供します。
次のようなローン情報とドキュメントを含むテーブルがあるとします。
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID ------------------------------------------ 992452533663 | Voters ID | XPD0355636 992452533663 | Pan card | CHXPS5522D 992452533663 | Drivers licence | DL-0420110141769
これらの行を構造化列に変換するには、次のようにします。 Oracle 10g の DECODE 関数、または Oracle 11g で導入された PIVOT 句を利用します。
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 関数を使用して、特定のドキュメント タイプに基づいて目的の列に値を割り当てます。 MAX 関数は、各列に一致するドキュメント ID を返します。
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
PIVOT 句は、ドキュメント タイプを列として配置し、対応するドキュメント ID を配置します。
これらのテクニックを利用すると、データをより列に重点を置いたレイアウトに効率的に再形成でき、作業が容易になります。理解し、さらに分析するため。
以上がOracle で行を列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。