ホームページ >データベース >Oracle >Oracle の垂直テーブルを水平テーブルに変換する方法

Oracle の垂直テーブルを水平テーブルに変換する方法

WBOY
WBOYオリジナル
2022-05-24 17:29:027667ブラウズ

Oracle では、unpivot() 関数を使用して、垂直テーブルを水平テーブルに変換できます。この関数は、一意のデータ形式に従って、行内の列のフィールドを複数行のデータに変換するために使用されます。行の値。構文は「データ セット アンピボットからフィールドを選択(カスタム列名の列値 in(列名))」です。

Oracle の垂直テーブルを水平テーブルに変換する方法

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle 垂直テーブルを水平テーブルに変換する方法

Oracle 列変換とは、行の一意の値に従って、行内の列のフィールドを複数行のデータに変換することです。

生徒成績表の基本データは、生徒の科目成績に対応する記録です。次に、行を列に変換し、各列の生徒の得点 (数学、英語、中国語) に対応するレコードに変換しました。そこで今回の記事は、以前変換した生徒成績表(バックアップ表score_copy)を再度列と行に変換して元のデータに変換するというものです。ケースデータは次のとおりです:

Oracle の垂直テーブルを水平テーブルに変換する方法

Oracle の垂直テーブルを水平テーブルに変換する方法

#それでは、列の切り替えをどのように実装すればよいでしょうか?一般的に使用される 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

結果は次のとおりです。

Oracle の垂直テーブルを水平テーブルに変換する方法

2. この問題は、Oracle 独自の列から行への関数 unpivot を使用することによっても完全に解決できます。具体的な構文構造は次のとおりです:

select 字段 from 数据集
unpivot(自定义列名/*列的值*/ for 自定义列名 in(列名))

実装コードは次のとおりです:

select stuname, coursename ,score from
score_copy  t
unpivot
(score for coursename in (英语,数学,语文))

結果は次のとおりです:

Oracle の垂直テーブルを水平テーブルに変換する方法

推奨チュートリアル: 「

Oracle Video Tutorial#」 ##"

以上がOracle の垂直テーブルを水平テーブルに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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