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 サイトの他の関連記事を参照してください。