집 >데이터 베이스 >MySQL 튜토리얼 >사용자 정의 집계 함수를 사용하여 SQL Server에서 그룹화된 값을 연결하는 방법은 무엇입니까?
사용자 정의 집계 함수를 사용한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!