Oracle では、pivot() 関数を使用して、水平テーブルを垂直テーブルに変換できます。この関数は、行を列に変換するために使用されます。構文は、「SELECT * FROM (データ クエリ セット) PIVOT」です。 (SUM(行 変換後の列の値)FORをIN列(変換後の列の値)に変換する必要があります)。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle の行から列への変換は、特定のフィールドの値を一意の値として使用し、別のフィールドの行の値を一意の値に変換することです。その列の値。ここでも、例としてシステムの生徒のスコア テーブルを使用します。スコア テーブルのレコード (行) は、各科目の各生徒のスコアに対応します。次に、各生徒のすべての科目を 1 つとして表示するレポートを作成する必要があります。コラムの公演情報です。ケースデータは次のとおりです。
#それでは、どうすればそれを達成できるでしょうか?いくつかの方法を 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 を使用し、デコードを使用して対応するコースの成績値を変換し、それを合計して成績の結果値を取得します。結果は次のとおりです:
2 、Oracle11g では、この行から列への要件を完全に解決できる組み込み関数 PIVOT が提供されます。具体的な構文構造は次のとおりです。具体的なコードは次のとおりです:
SELECT * FROM (数据查询集) PIVOT ( SUM(Score/*行转列后 列的值*/) FOR coursename/*需要行转列的列*/ IN (转换后列的值) )
結果は次のとおりです:
推奨チュートリアル: "
Oracle Video Tutorial以上がOracle の水平テーブルを垂直テーブルに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。