>데이터 베이스 >MySQL 튜토리얼 >사용자 정의 집계 함수를 사용하여 SQL Server에서 그룹화된 값을 연결하는 방법은 무엇입니까?

사용자 정의 집계 함수를 사용하여 SQL Server에서 그룹화된 값을 연결하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-09 12:37:55493검색

How to Concatenate Grouped Values in SQL Server Using a User-Defined Aggregate Function?

사용자 정의 집계 함수를 사용한 SQL Server 문자열 집계

MySQL의 GROUP_CONCAT과 유사하게 SQL Server의 그룹 내에서 문자열을 연결해야 합니까? SQL Server 2005 이상 버전에는 이에 상응하는 기능이 내장되어 있지 않으므로 고급 솔루션이 필요합니다. 사용자 정의 집계 함수(UDAF)는 효과적인 접근 방식을 제공합니다.

다음 샘플 데이터를 고려해보세요.

Id Value
1 'A'
1 'B'
2 'C'

목표는 다음과 같은 결과를 달성하는 것입니다.

Id Value
1 'AB'
2 'C'

UDAF 생성

다음 코드는 각 그룹 내에서 문자열 연결을 수행하기 위해 AggregateConcat이라는 UDAF를 정의합니다.

<code class="language-sql">CREATE FUNCTION AggregateConcat (@id INT, @value VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @result VARCHAR(MAX) = '';
    SELECT @result = @result + Value
    FROM TABLE_NAME
    WHERE Id = @id;
    RETURN @result;
END;</code>

UDAF 사용

이 함수는 다른 집계 함수와 마찬가지로 SELECT 문에서 사용할 수 있습니다.

<code class="language-sql">SELECT Id, dbo.AggregateConcat(Id, Value) AS ConcatenatedValue
FROM TABLE_NAME
GROUP BY Id;</code>

이 쿼리는 데이터를 Id별로 그룹화하고 AggregateConcat 함수를 적용하여 각 그룹의 Value 열을 연결하여 원하는 결과를 생성합니다. TABLE_NAME을 실제 테이블 이름으로 바꾸는 것을 잊지 마세요. 이 단순화된 버전은 덜 효율적인 커서 기반 접근 방식을 피합니다. 매우 큰 데이터 세트의 경우 STRING_AGG(SQL Server 2017 이상에서 사용 가능)

을 사용하는 등 보다 성능이 뛰어난 대체 방법을 고려하세요.

위 내용은 사용자 정의 집계 함수를 사용하여 SQL Server에서 그룹화된 값을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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