다른 행의 문자열을 단일 행으로 집계하는 방법을 찾고 있습니다. 여러 곳에서이 작업을 수행하려고하므로이를 용이하게하는 기능이 있으면 좋을 것입니다. 나는 COALESCE
및 을 사용하여 솔루션을 시도 FOR XML
했지만 그들은 나를 위해 그것을 자르지 않습니다.
문자열 집계는 다음과 같은 작업을 수행합니다.
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
나는 한 번 봐 찍은 CLR 정의 집계 함수 를 대체 COALESCE
하고 FOR XML
,하지만 분명히 SQL 애저는 하지 않습니다 내가의 전체를 많이 해결할 사용할 수있는 알고 있기 때문에 나를 위해 고통 CLR 정의 물건을 지원 나를위한 문제.
가능한 해결 방법, 또는 (CLR과 같은 최적으로되지 않을 수도 있지만, 마찬가지로 최적의 방법이있다 헤이 나는 내 물건을 집계하는 데 사용할 수있는 내가 무엇을 얻을 수 할게요)는?
for xml
쿼리 성능 측면에서 25 %의 사용량을 보여줍니다 (대량 쿼리!)
for xml path
쿼리 를 수행하는 방법에는 여러 가지가 있습니다. 일부는 다른 것보다 빠릅니다. 그것은 귀하의 데이터에 따라 달라질 수 있지만 사용하는 것은 사용하는 것 distinct
보다 느립니다 group by
. 당신이 사용하는 경우 그리고 .value('.', nvarchar(max))
연결 한 문자열 값을 얻기 위해 당신에게 그 변경해야합니다.value('./text()[1]', nvarchar(max))
for xml
당신에게 효과가 없습니까?