Estou descobrindo uma maneira de agregar strings de linhas diferentes em uma única linha. Estou procurando fazer isso em muitos lugares diferentes, então ter uma função para facilitar isso seria bom. Eu tentei soluções usando COALESCE
e FOR XML
, mas eles simplesmente não funcionam para mim.
A agregação de strings faria algo assim:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Eu dei uma olhada nas funções de agregação definidas pelo CLR como um substituto para COALESCE
e FOR XML
, mas aparentemente o SQL Azure não oferece suporte a coisas definidas pelo CLR, o que é uma dor para mim porque eu sei que poder usá-lo resolveria um monte de problemas para mim.
Existe alguma solução alternativa possível ou método igualmente ideal (que pode não ser tão ideal quanto CLR, mas hey , vou pegar o que puder) que eu possa usar para agregar minhas coisas?
for xml
um mostra um uso de 25% em termos de desempenho de consulta (grande parte da consulta!)
for xml path
consulta. Alguns mais rápidos do que outros. Pode depender dos seus dados, mas os que usam distinct
é mais lento do que usar group by
. E se você estiver usando .value('.', nvarchar(max))
para obter os valores concatenados, você deve alterar isso para.value('./text()[1]', nvarchar(max))
for xml
não funciona para você?