Oracle では、unpivot() 関数を使用して、垂直テーブルを水平テーブルに変換できます。この関数は、一意のデータ形式に従って、行内の列のフィールドを複数行のデータに変換するために使用されます。行の値。構文は「データ セット アンピボットからフィールドを選択(カスタム列名の列値 in(列名))」です。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle 列変換とは、行の一意の値に従って、行内の列のフィールドを複数行のデータに変換することです。
生徒成績表の基本データは、生徒の科目成績に対応する記録です。次に、行を列に変換し、各列の生徒の得点 (数学、英語、中国語) に対応するレコードに変換しました。そこで今回の記事は、以前変換した生徒成績表(バックアップ表score_copy)を再度列と行に変換して元のデータに変換するというものです。ケースデータは次のとおりです:
#それでは、列の切り替えをどのように実装すればよいでしょうか?一般的に使用される 2 つの方法を以下に紹介します: 1. スプライシングには Union All を使用します。これにより、対応する列を行レコードに完全に変換できます。具体的なコードは次のとおりです:select t.stuname, '英语' as coursename ,t.英语 as score from SCORE_COPY t union all select t.stuname, '数学' as coursename ,t.数学 as score from SCORE_COPY t union all select t.stuname, '语文' as coursename ,t.语文 as score from SCORE_COPY t結果は次のとおりです。 2. この問題は、Oracle 独自の列から行への関数 unpivot を使用することによっても完全に解決できます。具体的な構文構造は次のとおりです:
select 字段 from 数据集 unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))実装コードは次のとおりです:
select stuname, coursename ,score from score_copy t unpivot (score for coursename in (英语,数学,语文))結果は次のとおりです: 推奨チュートリアル: 「
以上がOracle の垂直テーブルを水平テーブルに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。