ピボット解除: リレーショナル データの再構築
テーブル StudentMarks
に生徒の名前 (Name
) とさまざまな科目の得点 (Maths
、Science
、English
) が格納されていると想像してください。 データは最初は次のように編成されています:
<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
演算子を使用します。 Maths
、Science
、および English
列を取得し、それらを単一の Subject
列に変換し、Marks
列に対応するスコアを含めます。 結果は、目的の長い形式になります。
ライブデモについては、この SQL フィドルをチェックしてください:
以上がSQL アンピボットによって幅の広い表形式データを長い形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。