SQL Server 함수: 여러 SQL 행을 단일 구분 필드로 결합
하위 쿼리의 여러 행을 SQL Server 내에서 구분된 단일 필드로 효율적으로 병합하려면 강력한 접근 방식이 필요합니다. 이 기사에서는 다양한 SQL Server 버전에 적합한 두 가지 효과적인 기술을 제시합니다.
XML 경로(SQL Server 2005 이상):
SQL Server 2005 및 이후 버전과 호환되는 이 방법은 문자열 연결에 FOR XML PATH
명령을 활용합니다. 예는 다음과 같습니다.
<code class="language-sql">SELECT [VehicleID], [Name], (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations FROM [Vehicle]</code>
이 쿼리는 FOR XML PATH
을 사용하여 각 VehicleID
에 대한 쉼표로 구분된 도시 값 문자열을 작성합니다. STUFF
함수는 선행 쉼표를 제거합니다.
STRING_AGG(SQL Server 2017 이상):
SQL Server 2017 이상에서는 STRING_AGG
기능이 더 깔끔하고 효율적인 솔루션을 제공합니다.
<code class="language-sql">SELECT [VehicleID], [Name], (SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V</code>
STRING_AGG
은 City
값을 지정된 구분 기호(이 경우 쉼표와 공백)로 직접 연결합니다. 이 접근 방식은 향상된 가독성과 성능 때문에 일반적으로 선호됩니다.
두 방법 모두 여러 행의 데이터를 구분된 단일 필드로 효과적으로 집계하여 SQL Server 내에서 데이터 조작을 단순화합니다. 최적의 결과를 얻으려면 SQL Server 버전에 가장 적합한 방법을 선택하세요.
위 내용은 여러 SQL 행을 단일 구분 필드로 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!