首頁 >資料庫 >mysql教程 >如何使用 SQL Server 的 GROUP BY 子句按報表 ID 連線電子郵件?

如何使用 SQL Server 的 GROUP BY 子句按報表 ID 連線電子郵件?

Linda Hamilton
Linda Hamilton原創
2025-01-10 17:41:41354瀏覽

How to Concatenate Emails by Report ID Using SQL Server's GROUP BY Clause?

SQL Server:使用 GROUP BY 連線報告 ID 群組內的電子郵件

在 SQL Server 中,有效地對資料進行分組並將相關值組合成單一字串是一項常見任務。 GROUP BY 子句根據指定的列對行進行分組,從而允許使用聚合函數進行資料操作和計算。

依報告 ID 組合電子郵件

想像一個這樣結構的表格:

<code>ID    ReportId     Email
1     1            [email protected]
2     2            [email protected]
3     1            [email protected]
4     3            [email protected]
5     3            [email protected]</code>

目標是按 ReportId 將行分組,並將對應的電子郵件連接成逗號分隔的字串。 所需的輸出:

<code>ReportId     Email
1            [email protected], [email protected]
2            [email protected]
3            [email protected], [email protected]</code>

利用 STUFF() 函數

這是使用子查詢中的 STUFF() 函數有效實現的:

<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>

詳細說明:

  • 內部子查詢選擇每個 ReportId 的所有電子郵件,並在每封電子郵件前面加上逗號和空格。
  • FOR XML PATH('') 將子查詢結果轉換為單一 XML 字串。
  • STUFF() 從 XML 字串中刪除前導逗號和空格,從而得到所需的逗號分隔電子郵件清單。

進一步考慮:

  • 其他聚合函數(例如SUM()AVG())可以與GROUP BY一起使用,對分組資料進行各種計算。
  • STUFF() 是一個高度通用的函數,用於各種字串操作操作。

以上是如何使用 SQL Server 的 GROUP BY 子句按報表 ID 連線電子郵件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn