ホームページ >データベース >mysql チュートリアル >データをアンピボットして列名を新しい列として SQL に含める方法
SQL でワイド データをロング形式に変換する
列 StudentMarks
、Name
、Maths
、および 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
句は、ピボットを解除する列 (Maths
、Science
、English
) を指定し、これらの列名は、結果のデータセット内の新しい Subject
列に自動的に設定されます。 marks
値は、ピボットされていないテーブルの marks
列に割り当てられます。この改訂されたクエリにより、目的の名前、件名、およびマークの列が長い形式で効率的に生成されます。
以上がデータをアンピボットして列名を新しい列として SQL に含める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。