ホームページ >データベース >mysql チュートリアル >CASE WHEN と GROUP BY を使用して SQL で列を正しくピボットする方法

CASE WHEN と GROUP BY を使用して SQL で列を正しくピボットする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-11 15:56:41615ブラウズ

How to Correctly Pivot Columns in SQL Using CASE WHEN and GROUP BY?

CASE WHEN と正しい GROUP BY ステートメントを使用して SQL 列をピボットします

問題の説明:

特定の条件に基づいてテーブル内の列を複数の列にピボットするには、SQL クエリで CASE WHEN 式を使用できます。ただし、このメソッドを実装すると、グループ化が欠落しているため、ユーザーは不正確な結果を経験する可能性があります。

クエリ:

この問題を解決するために、SUM() 集計関数と正しいグループ化を含む変更されたクエリが以下に提供されています。

<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>

説明:

  • 各名前の各 val (1 と 2) の合計量を計算するには、CASE WHEN 式で SUM() 関数を使用する必要があります。
  • GROUP BY name 句は、名前列ごとに結果をグループ化し、異なる名前ごとの金額が正しく合計されるようにします。

期待される結果:

この改良されたクエリにより、目的の出力が生成されます:

name amountVal1 amountVal2
John 2000 1888
Peter 1999 1854

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

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