Oracle での行から列への変換
データ テーブルには、多くの場合、個々のエンティティの複数の行にまたがる情報が含まれています。データの読みやすさと分析を向上させるには、これらの行を列に変換すると有益な場合があります。この質問では、単一のローン番号の文書情報を含むテーブルをより使いやすい形式に変換する実際の使用例を示します。
Oracle では、DECODE 関数または PIVOT を使用して行を列に効率的にピボットできます。句。これらのメソッドを使用して質問で示された問題を解決する方法を見てみましょう。
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 関数を使用して、 document_type に基づいて、 document_id 値を適切な列に設定します。 MAX() 集計関数は、各ドキュメント タイプの最新の document_id を取得するために使用されます。
PIVOT 句の使用 (Oracle 11g で使用可能)
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
PIVOT 句は、行を列にピボットするより簡潔な方法を提供します。集計関数 (この場合は MAX) とピボットする列を指定する必要があります。
どちらのアプローチでも効果的に行を列に変換し、各ローン番号の文書情報をより直感的で整理されたビューを提供します。
以上がDECODE または PIVOT を使用して Oracle で行を列に効率的にピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。