使用 GROUP BY 聚合資料:建立逗號分隔清單
SQL 的 GROUP BY
子句對於基於共享列值對行進行分組和應用聚合函數非常有用。 常見的應用程式是將單一列中的值組合成每個群組的單一逗號分隔字串。
讓我們用一個範例表來說明:
<code>ID User Activity PageURL 1 Me act1 ab 2 Me act1 cd 3 You act2 xy 4 You act2 st</code>
我們的目標是按 User
和 Activity
分組,連接每組的 PageURL
值。 所需的輸出:
<code>User Activity PageURL Me act1 ab, cd You act2 xy, st</code>
使用 STUFF() 的 SQL Server 解決方案
在 SQL Server 中,我們可以使用 GROUP BY
和 STUFF()
函數來實現此目的:
<code class="language-sql">SELECT [User], Activity, STUFF( (SELECT DISTINCT ',' + PageURL FROM TableName WHERE [User] = a.[User] AND Activity = a.Activity FOR XML PATH ('')) , 1, 1, '') AS URLList FROM TableName AS a GROUP BY [User], Activity</code>
說明:
GROUP BY [User], Activity
:依照 User
和 Activity
的唯一組合來分組。 SELECT
語句擷取每個群組的不同 PageURL
值。 ',' PageURL
在每個 URL 前面加上一個逗號。 FOR XML PATH('')
:這會將結果集轉換為單一字串,有效地用逗號連接 URL。 STUFF(..., 1, 1, '')
:這會刪除子查詢新增的前導逗號,從而產生乾淨的逗號分隔清單。 結論:
此方法有效地將列值組合到由 GROUP BY
子句定義的每個群組內的逗號分隔清單中。這是 SQL Server 中資料匯總和操作的通用技術。 請注意,字串連接的特定函數可能會因您的資料庫系統而略有不同(例如 MySQL 中的 GROUP_CONCAT
)。
以上是如何使用 SQL 的 GROUP BY 子句將列值組合成逗號分隔的清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!