我试图打破一个需要获取用户名的SQL表,并从最多4个系统中找到唯一的用户ID。
目前数据如下:
| Name | User_ID |
-----------------
| A | 10 |
| A | 110 |
| A | 1500 |
| A | 4 |
| B | 20 |
| B | 100 |
| B | 2 |
| C | 10 |
我需要围绕用户的名称进行调整,使其看起来像这样(ID不需要按照数字顺序排列,因为每个人的SYS#_ID都没有物):
| Name | SYS1_ID | SYS2_ID | SYS3_ID | SYS4_ID |
------------------------------------------------
| A | 4 | 10 | 110 | 1500 |
| B | 2 | 20 | 100 | NULL |
| C | 10 | NULL | NULL | NULL |
这是我在MySQL上尝试过的代码:
PIVOT(
COUNT(User_ID)
FOR Name
IN (SYS1_ID, SYS2_ID, SYS3_ID, SYS4_ID)
)
AS PivotedUsers
ORDER BY PivotedUsers.User_Name;
我不确定PIVOT是否适用于MySQL,因为我一直收到错误" PIVOT未知"。有没有办法找到每个用户拥有的值,如果它们没有出现在表中,已经将它们添加到最多4个值的下一列?