簡體   English   中英

如何根據SQL中的條件在列而不是行中顯示數據

[英]How to show data in columns rather than rows based on condition in SQL

我有一個表tt_players,其中有3列。

表結構

在此處輸入圖片說明

而我想要的結果就是這樣。

在此處輸入圖片說明

注意,具有相同reservation_id的記錄應在列中。 我知道具有相同Reservation_id的行不會從3增加。

我嘗試了Group BY子句,但無法實現我想要的。 任何幫助或提示將不勝感激。

我認為編寫與您的字面預期輸出匹配的查詢會讓人頭疼。 但是,使用GROUP_CONCAT我們可以得出非常接近的結果:

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

在此處輸入圖片說明

可能比您期望的更好的一個原因是,如果給定的預訂將來某個時候應該有3個以上的玩家,我的查詢只會在CSV玩家列表中添加一個新玩家。 如果我們在沒有動態SQL的情況下獲得准確的輸出,那么第四個播放器的存在可能會破壞查詢。

演示

您可以使用透視

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM