Sto trovando un modo per aggregare stringhe di righe diverse in una singola riga. Sto cercando di farlo in molti posti diversi, quindi sarebbe bello avere una funzione per facilitare questo. Ho provato soluzioni usando COALESCE
e FOR XML
, ma semplicemente non mi hanno tagliato.
L'aggregazione di stringhe farebbe qualcosa del genere:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Ho dato un'occhiata alle funzioni aggregate definite da CLR in sostituzione di COALESCE
e FOR XML
, ma apparentemente SQL Azure non supporta le cose definite da CLR, il che è un problema per me perché so che essere in grado di usarlo risolverebbe un sacco di problemi per me.
Esiste una possibile soluzione alternativa o un metodo altrettanto ottimale (che potrebbe non essere ottimale come CLR, ma ehi , prenderò quello che posso ottenere) che posso usare per aggregare le mie cose?
for xml
mostra un utilizzo del 25% in termini di prestazioni della query (la maggior parte della query!)
for xml path
query. Alcuni più veloci di altri. Potrebbe dipendere dai tuoi dati, ma quelli che utilizzano distinct
sono nella mia esperienza più lenti rispetto all'utilizzo group by
. E se stai usando .value('.', nvarchar(max))
per ottenere i valori concatenati dovresti cambiarlo in.value('./text()[1]', nvarchar(max))
for xml
non funziona per te?