T-SQL의 다른 필드를 기준으로 여러 레코드의 필드 그룹화
이 기사에서는 두 테이블의 여러 레코드와 관련된 필드 값을 그룹화하는 기술을 살펴봅니다. 리뷰, 리뷰어 및 사용자 테이블의 데이터를 결합하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!