COALESCE 및 FOR XML을 넘어서: SQL Azure의 효율적인 문자열 집계
여러 SQL 행에서 효율적인 문자열 연결을 원하는 많은 개발자는 특히 CLR 함수를 사용할 수 없는 경우 SQL Azure의 COALESCE
및 FOR XML
와 같은 표준 함수의 제한 사항에 직면합니다. 이 문서에서는 강력하고 효율적인 문자열 집계를 위해 CTE(공통 테이블 식)를 사용하는 강력한 Transact-SQL 솔루션을 제시합니다.
해결책: 순차 연결을 위한 재귀 CTE
우리의 접근 방식은 두 가지 CTE를 활용합니다.
Partitioned
CTE: ID
열을 기준으로 각 항목에 행 번호를 할당하고 Name
열을 기준으로 알파벳순으로 정렬합니다. 이 중요한 단계는 동일한 ID
으로 행을 그룹화하고 일관된 연결 순서를 보장합니다.
Concatenated
CTE(재귀): 이 CTE는 연결된 문자열을 반복적으로 작성합니다. FullName
열에 이름을 반복적으로 추가하여 최종 결과를 누적합니다.
그런 다음 기본 쿼리는 각 ID
에 대해 행 번호가 가장 높은 행만 선택하여 각 그룹에 대해 전체 집계 문자열을 생성합니다.
세부 분류 및 사용자 정의 옵션
이 방법은 세 가지 핵심 단계로 구성됩니다.
FullName
열 내에 집계된 문자열을 효율적으로 구축합니다.ID
.이 기술은 유연성을 제공합니다. 특정 데이터 구조 및 요구 사항에 맞게 그룹화(이 예에서는 ID
) 및 정렬 기준(여기에서는 Name
의 알파벳 순서)을 조정할 수 있습니다. 일관된 결과는 그룹화 및 정렬 매개변수 정의에 따라 달라집니다.
예시 및 출력
다음 샘플 데이터를 사용해 보겠습니다.
<code class="language-sql">INSERT dbo.SourceTable (ID, Name) VALUES (1, 'Matt'), (1, 'Rocks'), (2, 'Stylus'), (3, 'Foo'), (3, 'Bar'), (3, 'Baz')</code>
쿼리를 실행하면 다음이 생성됩니다.
<code>ID FullName ----------- ------------------------------ 2 Stylus 3 Bar, Baz, Foo 1 Matt, Rocks</code>
이는 여러 행에 걸쳐 효과적인 문자열 연결을 명확하게 보여주며, SQL Azure 문자열 집계 작업을 위한 CLR 함수에 대한 안정적인 대안을 제공합니다.
위 내용은 CLR 함수 없이 SQL Azure에서 여러 행의 문자열을 어떻게 효율적으로 연결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!