ホームページ データベース Oracle Oracleで行と列の変換を実現する方法

Oracleで行と列の変換を実現する方法

Jan 25, 2022 pm 05:23 PM
oracle

行-列変換を実装する方法: 1. PIVOT() 関数を使用して、行から列への変換を実装します。構文は「SELECT * FROM (データ セット) PIVOT (SUM(Score) FOR coursename」です。 IN (変換された列の値))" "; 2. unpivot() 関数を使用して列の切り替えを実現します。

Oracleで行と列の変換を実現する方法

このチュートリアルの動作環境: Windows 7 システム、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 (转换后列的值)
)
ログイン後にコピー

具体的なコードは次のとおりです:

select * from  (select c.stuname,
       b.coursename,
       t.score
  from STUDENT.SCORE t, student.course b, student.stuinfo c
 where t.courseid = b.courseid
   and t.stuid = c.stuid )  /*数据源*/PIVOT 
(
 SUM(score/*行转列后 列的值*/) 
 FOR coursename/*需要行转列的列*/ IN ('英语(2018上学期)' as 英语,'数学(2018上学期)' as 数学,'语文(2018上学期)' as 语文 )
) ;
ログイン後にコピー

結果は次のとおりです:

Oracleで行と列の変換を実現する方法

Oracle の列から行への変換

Oracle の列から行への変換は、行の一意の値に従って行内の列のフィールドを変換し、複数行のデータに変換します。たとえば、上記の Oracle の行から列への変換における生徒の成績表の基本データは、1 人の生徒の科目の成績が 1 つのレコードに対応するというものです。次に、行を列に変換し、各列の生徒の得点 (数学、英語、中国語) に対応するレコードに変換しました。そこで今回の記事は、以前変換した生徒成績表(バックアップ表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 Tutorial##」 #"

以上がOracleで行と列の変換を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracleの表空間サイズを確認する方法 Oracleの表空間サイズを確認する方法 Apr 11, 2025 pm 08:15 PM

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracleビューを暗号化する方法 Oracleビューを暗号化する方法 Apr 11, 2025 pm 08:30 PM

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

Oracleのインスタンス名を表示する方法 Oracleのインスタンス名を表示する方法 Apr 11, 2025 pm 08:18 PM

Oracleでインスタンス名を表示するには3つの方法があります。「sqlplus」と「v $ instanceからselect instance_name;」を使用します。」コマンドラインのコマンド。 「show instance_name;」を使用しますSQL*Plusのコマンド。オペレーティングシステムのタスクマネージャー、Oracle Enterprise Manager、またはオペレーティングシステムを介して、環境変数(LinuxのOracle_Sid)を確認してください。

Oracleのインストールをアンインストールする方法は失敗しました Oracleのインストールをアンインストールする方法は失敗しました Apr 11, 2025 pm 08:24 PM

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

オラクルで時間を取得する方法 オラクルで時間を取得する方法 Apr 11, 2025 pm 08:09 PM

Oracleで時間を取得するには、次の方法があります。Current_Timestamp:現在のシステム時間を秒に正確に返します。 systimestamp:current_timestampよりも正確で、ナノ秒。 sysdate:時間部分を除く現在のシステム日付を返します。 to_char(sysdate、 'yyy-mm-dd hh24:mi:ss'):現在のシステムの日付と時刻を特定の形式に変換します。抽出:1年、月、時間など、時間の値から特定の部分を抽出します。

Oracleデータベースをインポートする方法 Oracleデータベースをインポートする方法 Apr 11, 2025 pm 08:06 PM

データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracleのユーザーをセットアップする方法 Oracleのユーザーをセットアップする方法 Apr 11, 2025 pm 08:21 PM

Oracleでユーザーを作成するには、次の手順に従ってください。Createユーザーステートメントを使用して新しいユーザーを作成します。助成金ステートメントを使用して必要な権限を付与します。オプション:リソースステートメントを使用してクォータを設定します。デフォルトの役割や一時テーブルスペースなど、他のオプションを構成します。

Oracle Loopでカーソルを作成する方法 Oracle Loopでカーソルを作成する方法 Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

See all articles