使用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] |
一種方法是使用多個CASE 語句以及group by 子句:
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中文網其他相關文章!