고유 식별자와 연결된 여러 값이 포함된 테이블이 있다고 가정해 보겠습니다. 예:
<code>+------------+ | Id | Value | +------------+ | 1 | 'A' | |------------| | 1 | 'B' | |------------| | 2 | 'C' | +------------+</code>
동일한 ID를 가진 행을 결합된 값이 있는 하나의 행으로 병합하여 원하는 결과를 얻으려면:
<code>+------------+ | Id | Value | +------------+ | 1 | 'AB' | |------------| | 2 | 'C' | +------------+</code>
SQL Server 2005에서는 사용자 정의 집계 함수를 사용할 수 있습니다. 이 함수는 이 연결 작업을 원활하게 수행하기 위해 샘플 구현에 제공됩니다.
<code class="language-sql">-- 创建用户定义的聚合函数 CREATE FUNCTION [dbo].[ConcatValues](@array VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @result VARCHAR(MAX) = ''; IF @array IS NOT NULL BEGIN SELECT @result = @result + value FROM STRING_SPLIT(@array, ','); END RETURN @result; END; -- 在查询中使用用户定义的聚合函数 SELECT Id, [dbo].[ConcatValues](STRING_AGG(Value, ',')) AS Value FROM TableName GROUP BY Id;</code>
이 솔루션을 사용하면 다른 표준 집계 함수와 마찬가지로 사용자 정의 집계 함수를 활용하여 쿼리에 원활하게 통합할 수 있습니다. STRING_SPLIT
함수는 SQL Server 2016 이상에서 사용할 수 있습니다. SQL Server 2005의 경우 문자열을 분할하려면 사용자 지정 함수나 커서와 같은 대체 방법을 사용해야 합니다. 위 코드는 STRING_AGG
함수(SQL Server 2017 이상)를 사용하도록 업데이트되어 더욱 명확한 솔루션을 제공합니다. SQL Server 2005의 경우 STRING_AGG
및 STRING_SPLIT
의 기능을 에뮬레이트하려면 더 복잡한 사용자 지정 솔루션이 필요합니다.
위 내용은 SQL Server 2005에서 그룹화된 값을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!