ホームページ > データベース > mysql チュートリアル > SQL アンピボットによって幅の広い表形式データを長い形式に変換するにはどうすればよいですか?

SQL アンピボットによって幅の広い表形式データを長い形式に変換するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-21 04:46:08
オリジナル
188 人が閲覧しました

How Can SQL Unpivoting Transform Wide Tabular Data into a Long Format?

ピボット解除: リレーショナル データの再構築

テーブル StudentMarks に生徒の名前 (Name) とさまざまな科目の得点 (MathsScienceEnglish) が格納されていると想像してください。 データは最初は次のように編成されています:

<code>Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10</code>
ログイン後にコピー

しかし、別の構造、つまり各科目のスコアが新しい行に表示される構造が必要な場合はどうなるでしょうか? 望ましい結果は次のようになります:

<code>Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Raj, Maths, 30
Raj, Science, 20
Raj, English, 10</code>
ログイン後にコピー

ここで SQL アンピボットが登場します。これは、幅の広いテーブル (多数の列) を長いテーブル (多数の行) に変換するための強力な手法です。

SQL クエリを使用してこれを実現する方法は次のとおりです。

<code class="language-sql">SELECT u.name, u.subject, u.marks
FROM student s
UNPIVOT
(
  marks
  FOR subject IN (Maths, Science, English)
) u;</code>
ログイン後にコピー

このクエリは UNPIVOT 演算子を使用します。 MathsScience、および English 列を取得し、それらを単一の Subject 列に変換し、Marks 列に対応するスコアを含めます。 結果は、目的の長い形式になります。

ライブデモについては、この SQL フィドルをチェックしてください:

SQL フィドルの例

以上がSQL アンピボットによって幅の広い表形式データを長い形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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