ホームページ >データベース >mysql チュートリアル >データをアンピボットして列名を新しい列として SQL に含める方法

データをアンピボットして列名を新しい列として SQL に含める方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-21 04:37:07846ブラウズ

How to Unpivot Data and Include Column Names as a New Column in SQL?

SQL でワイド データをロング形式に変換する

StudentMarksNameMaths、および Science を含む English というテーブルがあるとします。 目標は、このワイド形式のデータを長い形式に変換し、件名が新しい列になるようにすることです。ターゲットの出力は次のようになります:

<code>Name  Subject  Marks
Tilak Maths    90
Tilak Science  40
Tilak English  60</code>

UNPIVOT 演算子を使用する一般的なアプローチは、最初は列名を新しい列として含めるのが難しいように思えるかもしれません。 ただし、解決策は簡単です:

<code class="language-sql">SELECT
  u.name,
  u.subject,
  u.marks
FROM StudentMarks AS s
UNPIVOT (
  marks FOR subject IN (Maths, Science, English)
) AS u;</code>

この SQL クエリは、UNPIVOT を使用して StudentMarks テーブル ('s' というエイリアス) を再構築します。 FOR 内の UNPIVOT 句は、ピボットを解除する列 (MathsScienceEnglish) を指定し、これらの列名は、結果のデータセット内の新しい Subject 列に自動的に設定されます。 marks 値は、ピボットされていないテーブルの marks 列に割り当てられます。この改訂されたクエリにより、目的の名前、件名、およびマークの列が長い形式で効率的に生成されます。

以上がデータをアンピボットして列名を新しい列として SQL に含める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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