Znajduję sposób na agregowanie ciągów z różnych wierszy w jeden wiersz. Chcę to zrobić w wielu różnych miejscach, więc dobrze byłoby mieć funkcję ułatwiającą to. Wypróbowałem rozwiązania wykorzystujące COALESCE
i FOR XML
, ale one po prostu tego nie robią.
Agregacja ciągów mogłaby zrobić coś takiego:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Rzuciłem okiem na funkcje agregujące zdefiniowane w CLR jako zamiennik COALESCE
i FOR XML
, ale najwyraźniej SQL Azure nie obsługuje elementów zdefiniowanych w CLR, co jest dla mnie uciążliwe, ponieważ wiem, że możliwość ich użycia rozwiązałaby wiele problemów problemy dla mnie.
Czy jest jakieś możliwe obejście lub podobnie optymalna metoda (która może nie być tak optymalna jak CLR, ale hej , wezmę to, co mogę uzyskać), której mogę użyć do zagregowania moich rzeczy?
for xml
pokazuje 25% wykorzystania pod względem wydajności zapytań (większość zapytań!)
for xml path
zapytania. Niektórzy szybciej niż inni. Może to zależeć od twoich danych, ale te, które używają, distinct
są z mojego doświadczenia wolniejsze niż używanie group by
. A jeśli używasz .value('.', nvarchar(max))
do uzyskania połączonych wartości, powinieneś zmienić to na.value('./text()[1]', nvarchar(max))
for xml
nie działa to dla Ciebie?