將基於行的結果轉換為基於列的結果,供不同群組的使用者使用:如何實現這種「輪換」?
P粉937382230
P粉937382230 2024-03-29 13:22:26
0
1
396

我正在執行 MySQL 5.7。

我正在尋找一個 SQL 查詢,它將一些資料從行「旋轉」到列中。表格如下:

users

user_id,first_name
1,Alice
2,Bob
3,Eve
4,Mallory

user_groups表格

user_id,group_name
1,Administrator
2,Editor
2,Contributor
3,Viewer

有一組有限的小組,我想產生以下結果:

user_id,first_name,Administrator,Editor,Contributor,Viewer
1,Alice,Yes,No,No,No
2,Bob,No,Yes,Yes,No
3,Eve,No,No,No,Yes
4,Mallory,No,No,No,No

我甚至不確定我該如何稱呼這種查詢,但這就是我想做的。 「是」和「否」可以是 0 和 1,或 NULL 和 1,都可以。

有什麼想法嗎?

P粉937382230
P粉937382230

全部回覆(1)
P粉239089443
SELECT u.user_id,
 MAX(CASE group_name WHEN 'Administrator' THEN 'Yes' ELSE 'No' END) AS Administrator,
 MAX(CASE group_name WHEN 'Editor' THEN 'Yes' ELSE 'No' END) AS Editor,
 MAX(CASE group_name WHEN 'Contributor' THEN 'Yes' ELSE 'No' END) AS Contributor,
 MAX(CASE group_name WHEN 'Viewer' THEN 'Yes' ELSE 'No' END) AS Viewer
FROM users AS u
LEFT OUTER JOIN user_groups AS g USING (user_id)
GROUP BY u.user_id;

與其他一些品牌的 SQL 資料庫不同,MySQL 不支援 PIVOTCROSSTAB 的任何特殊語法。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板