ホームページ > データベース > Oracle > Oracle で行を列に変換する方法

Oracle で行を列に変換する方法

PHPz
リリース: 2023-04-18 09:44:26
オリジナル
22277 人が閲覧しました

Oracle データベースでは、行変換は一般的なデータ処理要件です。データの表示と分析を改善するために、行の複数の値を列の複数の値に変換します。

たとえば、次のテーブルがあるとします。

##1ジョン8070902リリー9085953トム6075 # #各生徒の成績を個別の行に変換したい場合は、行から列を使用して次の結果を得ることができます:
ID Name Score1 スコア 2 スコア 3
##80

IDName件名スコア##1ジョンジョンジョン##2リリー スコア 1902リリースコア2852 リリースコア3953トムスコア1603トムスコア2753TomScore380UNPIVOT を使用して行を列に転送する
スコア1 80 1
スコア2 70 1
スコア 3 90
Oracle では、変換に使用できるメソッドがいくつかあります。 UNPIVOT と UNION ALL の使用を含む、行から列への変換。次に、各メソッドの手順と構文について詳しく説明します。
UNPIVOT は、列を行に移動できる Oracle SQL のキーワードです。 UNPIVOT クエリを使用して、複数の列を複数の行に変換します。 UNPIVOT を使用するには、まずテーブル内の各行の列数とデータ型が同じであることを確認する必要があります。

UNPIVOT を使用して行を列に変換する手順は次のとおりです:

ステップ 1: サンプル テーブルを作成する

まず、準備するサンプル テーブルを作成する必要があります。データ。

CREATE TABLE score (
   ID INT,
   Name VARCHAR2(20),
   Score1 INT,
   Score2 INT,
   Score3 INT
);

INSERT INTO score VALUES (1, 'John', 80, 70, 90);
INSERT INTO score VALUES (2, 'Lily', 90, 85, 95);
INSERT INTO score VALUES (3, 'Tom', 60, 75, 80);
COMMIT;
ログイン後にコピー
ログイン後にコピー
ステップ 2: UNPIVOT クエリを実行します

次に、次の UNPIVOT クエリを使用してデータを変換します。

SELECT ID, Name, Subject, Score
FROM score
UNPIVOT (
   Score FOR Subject IN (Score1, Score2, Score3)
);
ログイン後にコピー
実行結果は次のとおりです。

ID

名前件名スコア1ジョンスコア1801ジョンスコア 2701ジョンスコア 390スコア1スコア2スコア3スコア1スコア 2スコア 3
DROP TABLE score;
ログイン後にコピー
ログイン後にコピー
UNION ALL を使用して行を列に変換します
##2 リリー
90 2 リリー
85 2 リリー
95 3 トム
60 #3 トム
75 3 トム
80 ##ステップ 3: テーブルをクリアする 最後に、テーブルを削除してデータをクリアできます:
UNION ALL も Oracle SQL で行を列に変換するために使用されるメソッド。 UNION ALL クエリを使用して列を行に変換できます。 UNION ALL を使用して行を列に変換する手順は次のとおりです。

ステップ 1: サンプル テーブルを作成する

まず、データを準備するためにサンプル テーブルを作成する必要があります。

CREATE TABLE score (
   ID INT,
   Name VARCHAR2(20),
   Score1 INT,
   Score2 INT,
   Score3 INT
);

INSERT INTO score VALUES (1, 'John', 80, 70, 90);
INSERT INTO score VALUES (2, 'Lily', 90, 85, 95);
INSERT INTO score VALUES (3, 'Tom', 60, 75, 80);
COMMIT;
ログイン後にコピー
ログイン後にコピー
ステップ 2: UNION ALL クエリを実行する

次に、次の UNION ALL クエリを使用してデータを変換できます:

SELECT ID, Name, 'Score1' Subject, Score1 Score FROM score
UNION ALL
SELECT ID, Name, 'Score2' Subject, Score2 Score FROM score
UNION ALL
SELECT ID, Name, 'Score3' Subject, Score3 Score FROM score
ORDER BY ID, Subject;
ログイン後にコピー
実行結果は次のとおりです:

ID

名前

件名スコアスコア1807090908595 ##3トムスコア160ステップ 3: テーブルをクリアする最後に、テーブルを削除してデータをクリアできます: summaryRow to column は一般的なデータ処理テクノロジーにより、データをより適切に表示および分析できるようになります。 Oracle SQL では、UNPIVOT と UNION ALL を使用して行を列に変換できます。これらの概念と関連する構文をマスターすることで、データベース内のデータを簡単に処理および分析できるようになります。
#1 ジョン
1 ジョン スコア 2
1 ジョン スコア 3
2 リリー スコア 1
2 リリー スコア 2
2 リリー スコア 3
##3 トム スコア 2 75
3 トム スコア 3 80
DROP TABLE score;
ログイン後にコピー
ログイン後にコピー

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

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