T-SQL中多個記錄欄位的組合
在T-SQL中,經常需要根據另一個欄位對多個記錄的欄位進行分組。考慮以下場景:
您有三個表:Reviews、Reviewers和Users。 Reviews表包含ReviewID和ReviewDate。 Reviewers表格包含ReviewerID、ReviewID和UserID。最後,Users表格包含UserID、FName和LName。
挑戰:
您希望顯示一個評論列表,每個列表都包含其相應的評論日期和與該評論關聯的所有審稿人的逗號分隔的姓名列表。期望的輸出如下圖所示:
<code>ReviewID---ReviewDate----Users ---------------------------- 1----------12/1/2009-----Bob, Joe, Frank 2----------12/9/2009-----Sue, Alice</code>
而不是:
<code>ReviewID---ReviewDate---User ---------------------------- 1----------12/1/2009----Bob 1----------12/1/2009----Joe 1----------12/1/2009----Frank 2----------12/9/2009----Sue 2----------12/9/2009----Alice</code>
解:
解決此問題的一種方法是使用FOR XML PATH('')方法:
<code class="language-sql">SELECT *, ( SELECT u.FName + ',' FROM @Users u INNER JOIN @Reviewers rs ON u.UserID = rs.UserID WHERE rs.ReviewID = r.ReviewID FOR XML PATH('') ) AS Users FROM @Reviews r</code>
以下是查詢的細分:
第1行: 從Reviews表格中選取必要的欄位:ReviewID和ReviewDate。
第4-9行: 使用子查詢來擷取每個註解的逗號分隔的姓名清單。
第10行: 子查詢的結果被指定別名為Users。
This revised output clarifies the alias and improves readability. The core functionality remains the same, efficiently concatenating reviewer first names into a comma-separated string.
以上是如何在 T-SQL 中將多個審查者的名字連接成單一逗號分隔的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!