ホームページ >データベース >mysql チュートリアル >Oracle で行を列に効率的に変換するにはどうすればよいですか?

Oracle で行を列に効率的に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-04 21:27:40451ブラウズ

How to Efficiently Transform Rows into Columns in Oracle?

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 句を利用します。

DECODE 関数 (Oracle 10g)

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 を返します。

PIVOT 句 (Oracle 11g)

SELECT *
FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);

PIVOT 句は、ドキュメント タイプを列として配置し、対応するドキュメント ID を配置します。

これらのテクニックを利用すると、データをより列に重点を置いたレイアウトに効率的に再形成でき、作業が容易になります。理解し、さらに分析するため。

以上がOracle で行を列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。