首頁 > 資料庫 > mysql教程 > 如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 連線電子郵件?

如何使用 SQL Server 的 GROUP BY 和 STUFF() 按 ReportId 連線電子郵件?

Barbara Streisand
發布: 2025-01-10 17:38:41
原創
1008 人瀏覽過

How to Concatenate Emails by ReportId Using SQL Server's GROUP BY and STUFF()?

在 SQL Server 中聚合電子郵件:GROUP BY 和 STUFF() 解決方案

SQL Server 的 GROUP BY 子句對於匯總資料非常強大。 一項常見的任務是將多行的值組合成一個字串,通常以逗號分隔。 使用 STUFF().

等函數可以有效處理此問題

讓我們用一個範例員工報告表來說明:

ID ReportId Email
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 Email
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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板