>데이터 베이스 >MySQL 튜토리얼 >T-SQL에서 여러 검토자의 이름을 단일 쉼표로 구분된 문자열로 연결하는 방법은 무엇입니까?

T-SQL에서 여러 검토자의 이름을 단일 쉼표로 구분된 문자열로 연결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-15 07:54:43398검색

How to Concatenate Multiple Reviewers' First Names into a Single Comma-Separated String in T-SQL?

T-SQL의 여러 레코드 필드 조합

T-SQL에서는 다른 필드를 기반으로 여러 레코드의 필드를 그룹화해야 하는 경우가 많습니다. 다음 시나리오를 고려해보세요.

세 개의 테이블이 있습니다: 리뷰, 리뷰어, 사용자. 리뷰 테이블에는 ReviewIDReviewDate가 포함되어 있습니다. Reviewers 테이블에는 ReviewerID, ReviewIDUserID가 포함되어 있습니다. 마지막으로 Users 테이블에는 UserID, FNameLName이 포함됩니다.

도전:

각 리뷰 목록에는 해당 리뷰 날짜와 해당 리뷰와 관련된 모든 리뷰어의 이름이 쉼표로 구분된 목록이 포함되어 있습니다. 원하는 출력은 다음과 같습니다.

<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 테이블에서 필요한 열(ReviewIDReviewDate)을 선택합니다.

  • 4-9행: 하위 쿼리를 사용하여 각 댓글에 대해 쉼표로 구분된 이름 목록을 검색합니다.

    • 하위 쿼리는 UserID를 기준으로 UsersReviewers 테이블을 조인합니다.
    • FName 열을 선택하고 각 이름 뒤에 쉼표를 연결합니다.
    • FOR XML PATH('') 섹션은 결과를 단일 문자열로 집계합니다.
  • 10행: 하위 쿼리의 결과는 Users로 별칭이 지정됩니다.

이 수정된 출력에서는 별칭을 명확히 하고 가독성을 높였습니다. 핵심 기능은 동일하게 유지되어 리뷰어 이름을 쉼표로 구분된 문자열로 효율적으로 연결합니다.

위 내용은 T-SQL에서 여러 검토자의 이름을 단일 쉼표로 구분된 문자열로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.