ホームページ > データベース > mysql チュートリアル > CASE WHEN を使用して SQL 列をピボットして行データを列に変換する方法

CASE WHEN を使用して SQL 列をピボットして行データを列に変換する方法

Mary-Kate Olsen
リリース: 2025-01-11 16:02:46
オリジナル
878 人が閲覧しました

How to Pivot a SQL Column Using CASE WHEN to Transform Row Data into Columns?

SQL 列のピボットに CASE WHEN を使用する

SQL データを行から列に変換する必要がありますか? CASE WHEN ステートメントは、特に集計が必要な列に重複した値を含むテーブルを扱う場合に、ピボットに対する簡単なソリューションを提供します。

例を挙げて説明しましょう。 このテーブルを想像してください:

<code class="language-sql">Bank:
name  val   amount
John   1     2000
Peter  1     1999
Peter  2     1854
John   2     1888</code>
ログイン後にコピー

私たちの目標: これを、一意の "val" 値が列となり、それぞれの一意の "name" が行となるテーブルに再構築します。目的の出力:

<code class="language-sql">name  amountVal1 amountVal2  
John    2000        1888   
Peter   1999        1854    </code>
ログイン後にコピー

SUM()CASE WHEN を使用してこのピボットを実現する方法は次のとおりです。

<code class="language-sql">SELECT 
  name,
  SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1,
  SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2
FROM bank
GROUP BY name;</code>
ログイン後にコピー

このクエリは、SUM() を使用して、一意の amountname の組み合わせごとに val 値を集計します。 CASE WHEN ステートメントは、val が 1 か 2 であるかを確認し、それに応じて対応する amount を割り当てます。 GROUP BY name は、一意の名前ごとに 1 行を保証します。 結果? amountVal1 列と amountVal2 列は、ピボットされたデータをきちんと表します。 この方法は、既知の限られた数の val 値に対して有効です。動的な値の数については、PIVOT またはその他のより高度なテクニックの使用を検討してください。

以上がCASE WHEN を使用して SQL 列をピボットして行データを列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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