在 SQL Server 中聚合電子郵件:GROUP BY 和 STUFF() 解決方案
SQL Server 的 GROUP BY
子句對於匯總資料非常強大。 一項常見的任務是將多行的值組合成一個字串,通常以逗號分隔。 使用 STUFF()
.
讓我們用一個範例員工報告表來說明:
ID | ReportId | |
---|---|---|
1 | 1 | john@example.com |
2 | 2 | mary@example.com |
3 | 1 | jane@example.com |
4 | 3 | david@example.com |
5 | 3 | susan@example.com |
要使用逗號作為分隔符號連接與每個 ReportId
關聯的電子郵件,此查詢有效:
<code class="language-sql">SELECT ReportId, Email = STUFF((SELECT ', ' + Email FROM your_table b WHERE b.ReportId = a.ReportId FOR XML PATH('')), 1, 2, '') FROM your_table a GROUP BY ReportId;</code>
STUFF()
函數修改字串。 它需要四個參數:字串、起始位置、要刪除的字元數以及替換字串。
外部查詢依ReportId
分組。內部查詢使用 FOR XML PATH('')
連接每個群組的電子郵件。 STUFF()
然後刪除前導逗號和空格。
查詢的輸出:
ReportId | |
---|---|
1 | john@example.com, jane@example.com |
2 | mary@example.com |
3 | david@example.com, susan@example.com |
以上是如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 連線電子郵件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!