ホームページ >データベース >mysql チュートリアル >SQL で元の列名を保持したままデータをアンピボットするにはどうすればよいですか?
データのデコンボリューションのために元の列名を保持します
データのデコンボリューション (アンピボット) は、表形式のデータを別の形式に変換するプロセスであり、各列が行になり、その列名が行の属性になります。これは通常、分析や視覚化のためにデータを再形成するために使用されますが、場合によっては、元の列名を保持すると便利な場合があります。
質問:
Name
、Maths
、Science
、English
などの列名を持つデータ テーブルがある場合、データをデコンボリューションして次の結果セットを取得するにはどうすればよいでしょうか?
Name | Subject | Marks |
---|---|---|
Tilak | Maths | 90 |
Tilak | Science | 40 |
Tilak | English | 60 |
解決策:
SQL の UNPIVOT
句を使用すると、列名を維持しながらデータをデコンボリューションできます。
<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
列を行に変換し、スコアはデコンボリューションされた結果セットの「マーク」列になります。同時に、列名は「件名」列に残ります。
例:
次のデータセットについて考えてみましょう:
Name | Maths | Science | English |
---|---|---|---|
Tilak | 90 | 40 | 60 |
Raj | 30 | 20 | 10 |
提供されたクエリをこのデータセットに適用すると、望ましい結果が得られます:
Name | Subject | Marks |
---|---|---|
Tilak | Maths | 90 |
Tilak | Science | 40 |
Tilak | English | 60 |
Raj | Maths | 30 |
Raj | Science | 20 |
Raj | English | 10 |
この手法は、さらなる分析やデータ処理のために元の列名を保持することが重要な場合に役立ちます。
以上がSQL で元の列名を保持したままデータをアンピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。