【发布时间】:2021-03-28 14:42:48
【问题描述】:
我遇到了一个问题,我认为我必须使用 pivot 来解决我不熟悉的问题。 如果有人能为我提供帮助,我将非常感激。
以下查询产生以下输出。 这当然是正确的。
SELECT tm.team_id AS team, pp.user_name AS name, tm.rank AS rank
FROM teams_members AS tm
LEFT JOIN players_profiles AS pp
ON pp.uid=tm.user_id
WHERE tm.team_id = 1 OR tm.team_id = 2
ORDER BY tm.team_id, tm.rank
| team | name | rank |
|---|---|---|
| 1 | 1Player1 | 1 |
| 1 | 1Player2 | 2 |
| 1 | 1Player3 | 2 |
| 1 | 1Player4 | 2 |
| 1 | 1Player5 | 3 |
| 1 | 1Player6 | 4 |
| 1 | 1Player7 | 5 |
| 2 | 2Player1 | 1 |
| 2 | 2Player2 | 2 |
| 2 | 2Player3 | 2 |
| 2 | 2Player4 | 2 |
我希望桌子看起来像这样。我如何调整查询? 有可能,等级2可以容纳无限数量的玩家。等级 1、3、4 和 5 被设置为限制为 1。
| team | 1 | 2 | 2 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|---|
| 1 | 1Player1 | 1Player2 | 1Player3 | 1Player4 | 1Player5 | 1Player6 | 1Player7 |
| 2 | 2Player1 | 2Player2 | 2Player3 | 2Player4 | |||
| 3 | 3Player1 | 3Player2 | 3Player3 | 3Player4 | 3Player5 | ||
| 4 | 4Player1 | 4Player2 | 4Player3 | 3Player4 |
感谢您的帮助。非常感谢!
【问题讨论】:
-
您使用的是哪个 dbms?
-
我正在使用 MySQL
-
你自己尝试了什么?文档中有一个很好的示例(如果您使用 MSSQL,请参阅:docs.microsoft.com/en-us/sql/t-sql/queries/…
-
对于 MySQL,示例在这里:stackoverflow.com/questions/7674786/…
-
嗨 Luuk,感谢您提供的示例。我只是一个用户,我正在尝试通过 db 获取数据,这样我就不必从前端表中获取它们。我有超过 500 行,我手动复制粘贴和排序。这需要太多时间,而且我对枢轴不太熟悉,但会更深入地研究它。