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

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

WBOY
リリース: 2022-05-24 15:23:06
オリジナル
5946 人が閲覧しました

Oracle では、pivot() 関数を使用して、水平テーブルを垂直テーブルに変換できます。この関数は、行を列に変換するために使用されます。構文は、「SELECT * FROM (データ クエリ セット) PIVOT」です。 (SUM(行 変換後の列の値)FORをIN列(変換後の列の値)に変換する必要があります)。

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

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

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

Oracle の行から列への変換は、特定のフィールドの値を一意の値として使用し、別のフィールドの行の値を一意の値に変換することです。その列の値。ここでも、例としてシステムの生徒のスコア テーブルを使用します。スコア テーブルのレコード (行) は、各科目の各生徒のスコアに対応します。次に、各生徒のすべての科目を 1 つとして表示するレポートを作成する必要があります。コラムの公演情報です。ケースデータは次のとおりです。

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

#それでは、どうすればそれを達成できるでしょうか?いくつかの方法を 1 つずつ説明します:

1. まず最初に考えなければならないのは、Oracle のグループ化 (グループ化) が使用できることです。実装コードは次のとおりです:

select c.stuname,
       --利用分组聚合函数
       sum(decode(b.coursename, '英语(2018上学期)', t.score, 0)) as "英语(2018上学期)",
       sum(decode(b.coursename, '数学(2018上学期)', t.score, 0)) as "英语(2018上学期)",
       sum(decode(b.coursename, '语文(2018上学期)', t.score, 0)) as "英语(2018上学期)"
  from STUDENT.SCORE t, student.course b, student.stuinfo c
 where t.courseid = b.courseid
   and t.stuid = c.stuid
 group by c.stuname
ログイン後にコピー

学生をグループ化するために group by を使用し、デコードを使用して対応するコースの成績値を変換し、それを合計して成績の結果値を取得します。結果は次のとおりです:

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

2 、Oracle11g では、この行から列への要件を完全に解決できる組み込み関数 PIVOT が提供されます。具体的な構文構造は次のとおりです。具体的なコードは次のとおりです:

SELECT * FROM (数据查询集)
PIVOT 
(
 SUM(Score/*行转列后 列的值*/) FOR 
 coursename/*需要行转列的列*/ IN (转换后列的值)
)
ログイン後にコピー

結果は次のとおりです:

Oracle の水平テーブルを垂直テーブルに変換する方法 推奨チュートリアル: "

Oracle Video Tutorial

"

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート