我有一个包含3列的表tt_players。
我想要的结果就是这样。
请注意,具有相同reservation_id的记录应该在列中。我知道具有相同reservation_id的行不会从3增加。
我尝试过Group BY子句,但无法达到我想要的效果。任何帮助或提示都将受到高度赞赏。
答案 0 :(得分:2)
我认为编写一个与您的文字预期输出相匹配的查询会很头疼。但是使用GROUP_CONCAT
我们可以得到一些非常接近的东西:
SELECT
reservation_id,
GROUP_CONCAT(player_id ORDER BY player_id) players
FROM
yourTable
GROUP BY
reservation_id;
这可能比你期望的更可取的一个原因是,如果某个预订在未来的某个时间点应该有超过3名玩家,我的查询只会将新玩家添加到CSV的玩家列表中。如果我们在没有动态SQL的情况下进行精确输出,则第四个玩家的存在可能会破坏查询。
答案 1 :(得分:0)
你可以使用Pivoting
SELECT [reservation_id], player_id
FROM [dbo].[PivotExample]
PIVOT
(
FOR [player_id] IN ([1], [2], [4], [5])
) AS P