在 T-SQL 中以另一個欄位對多個記錄的欄位分組
本文將探討一種技術,用於將兩個表中與多個記錄關聯的欄位值進行分組。透過組合來自 Reviews、Reviewers 和 Users 表的數據,我們可以將 FName 欄位連接成逗號分隔的字串。
<code class="language-sql">-- 示例数据 DECLARE @Reviews TABLE( ReviewID INT, ReviewDate DATETIME ) DECLARE @Reviewers TABLE( ReviewerID INT, ReviewID INT, UserID INT ) DECLARE @Users TABLE( UserID INT, FName VARCHAR(50), LName VARCHAR(50) ) INSERT INTO @Reviews SELECT 1, '12 Jan 2009' INSERT INTO @Reviews SELECT 2, '25 Jan 2009' INSERT INTO @Users SELECT 1, 'Bob', '' INSERT INTO @Users SELECT 2, 'Joe', '' INSERT INTO @Users SELECT 3, 'Frank', '' INSERT INTO @Users SELECT 4, 'Sue', '' INSERT INTO @Users SELECT 5, 'Alice', '' INSERT INTO @Reviewers SELECT 1, 1, 1 INSERT INTO @Reviewers SELECT 2, 1, 2 INSERT INTO @Reviewers SELECT 3, 1, 3 INSERT INTO @Reviewers SELECT 4, 2, 4 INSERT INTO @Reviewers SELECT 5, 2, 5</code>
使用巢狀 SELECT 和 FOR XML PATH() 的解
利用 FOR XML PATH() 運算符,我們可以將 FName 值連接到單一字串中:
<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 UserNames FROM @Reviews r</code>
此查詢傳回下列結果:
<code>ReviewID ReviewDate UserNames 1 12 Jan 2009 Bob,Joe,Frank 2 25 Jan 2009 Sue,Alice</code>
結論
利用 FOR XML PATH() 函數,我們成功地以公用欄位對不同表中多個記錄的欄位值進行了分組。此技術可應用於需要連接字串表示的場景。
以上是如何將多個 T-SQL 記錄中的欄位連接成逗號分隔的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!