ホームページ >データベース >mysql チュートリアル >CASE ステートメントを使用して SQL のデータを転置する方法

CASE ステートメントを使用して SQL のデータを転置する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-05 04:36:39729ブラウズ

How to Transpose Data in SQL Using CASE Statements?

Case ステートメントを使用した SQL テーブルのデータの転置

SQL では、データの転置とは、行と列が交換されるデータセットを変換することを指します。提供されているものと同様の構造を持つテーブルを転置するには:

Id UserId FieldName FieldValue
1 100 Username John Doe
2 100 Password pass123!
3 102 Username Jane
4 102 Password $ecret
5 102 Email Address [email protected]

転置形式:

UserId Username Password Email Address
100 John Doe pass123!
102 Jane $ecret [email protected]

の 1 つの方法は、group by 句とともに複数の CASE ステートメントを使用することです。

SELECT t.userid
       MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
       MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
       MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
  FROM TABLE t
GROUP BY t.userid

このクエリは、ユーザーとフィールドの各組み合わせの最大値を計算します。 CASE ステートメントは、FieldName フィールドの値に基づいてどのフィールド値を返すかを定義します。

ただし、このメソッドでは、特定のフィールド名ごとに CASE ステートメントを定義する必要があります。動的ソリューションの場合は、MySQL のプリペアド ステートメント (動的 SQL) 構文を使用してクエリを生成することを検討してください。

以上がCASE ステートメントを使用して SQL のデータを転置する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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