Estoy encontrando una manera de agregar cadenas de diferentes filas en una sola fila. Estoy buscando hacer esto en muchos lugares diferentes, por lo que sería bueno tener una función para facilitar esto. He probado soluciones usando COALESCE
y FOR XML
, pero simplemente no me sirven.
La agregación de cadenas haría algo como esto:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
He echado un vistazo a las funciones agregadas definidas por CLR como reemplazo de COALESCE
y FOR XML
, pero aparentemente SQL Azure no es compatible con cosas definidas por CLR, lo cual es una molestia para mí porque sé que poder usarlo resolvería una gran cantidad de problemas para mi.
¿Existe alguna solución alternativa o un método igualmente óptimo (que podría no ser tan óptimo como CLR, pero bueno , tomaré lo que pueda obtener) que pueda usar para agregar mis cosas?
for xml
muestra un uso del 25% en términos de rendimiento de la consulta (¡la mayor parte de la consulta!)
for xml path
consulta. Algunos más rápidos que otros. Podría depender de sus datos, pero los que usan distinct
son, en mi experiencia, más lentos que los que usan group by
. Y si está utilizando .value('.', nvarchar(max))
para obtener los valores concatenados, debe cambiar eso a.value('./text()[1]', nvarchar(max))
for xml
te funciona?