如何根据SQL中的条件以列而不是行显示数据

时间:2017-11-06 09:30:24

标签: mysql sql group-by

我有一个包含3列的表tt_players。

表格结构

enter image description here

我想要的结果就是这样。

enter image description here

请注意,具有相同reservation_id的记录应该在列中。我知道具有相同reservation_id的行不会从3增加。

我尝试过Group BY子句,但无法达到我想要的效果。任何帮助或提示都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

我认为编写一个与您的文字预期输出相匹配的查询会很头疼。但是使用GROUP_CONCAT我们可以得到一些非常接近的东西:

SELECT
    reservation_id,
    GROUP_CONCAT(player_id ORDER BY player_id) players
FROM
    yourTable
GROUP BY
    reservation_id;

enter image description here

这可能比你期望的更可取的一个原因是,如果某个预订在未来的某个时间点应该有超过3名玩家,我的查询只会将新玩家添加到CSV的玩家列表中。如果我们在没有动态SQL的情况下进行精确输出,则第四个玩家的存在可能会破坏查询。

Demo

答案 1 :(得分:0)

你可以使用Pivoting

SELECT   [reservation_id], player_id
FROM   [dbo].[PivotExample] 
PIVOT
(

       FOR [player_id] IN ([1], [2], [4], [5])
) AS P