Ich finde eine Möglichkeit, Zeichenfolgen aus verschiedenen Zeilen in einer einzigen Zeile zusammenzufassen. Ich möchte dies an vielen verschiedenen Orten tun, daher wäre es schön, eine Funktion zu haben, die dies erleichtert. Ich habe Lösungen mit COALESCE
und ausprobiert FOR XML
, aber sie schneiden es einfach nicht für mich.
Die String-Aggregation würde ungefähr so aussehen:
id | Name Result: id | Names
-- - ---- -- - -----
1 | Matt 1 | Matt, Rocks
1 | Rocks 2 | Stylus
2 | Stylus
Ich habe mir CLR-definierte Aggregatfunktionen als Ersatz für COALESCE
und angesehen FOR XML
, aber anscheinend unterstützt SQL Azure keine CLR-definierten Funktionen, was für mich ein Schmerz ist, da ich weiß, dass die Verwendung eine ganze Menge davon lösen würde Probleme für mich.
Gibt es eine mögliche Abhilfe, oder in ähnlicher Weise eine optimale Verfahren (die als optimal nicht als CLR sein könnte, aber hey ich nehme , was ich kriegen kann) , dass ich verwenden kann , meine Sachen zu aggregieren?
for xml
zeigt eine 25% ige Auslastung in Bezug auf die Abfrageleistung (ein Großteil der Abfrage!)
for xml path
Abfrage durchzuführen. Einige schneller als andere. Es könnte von Ihren Daten abhängen, aber die verwendeten distinct
sind meiner Erfahrung nach langsamer als die group by
. Und wenn Sie verwenden .value('.', nvarchar(max))
, um die verketteten Werte zu erhalten, sollten Sie dies in.value('./text()[1]', nvarchar(max))
for xml
funktioniert das bei Ihnen nicht?