Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine String-Aggregation in SQL Server ohne eine „AGG'-Funktion erreichen?
Gruppierte String-Aggregation in SQL Server: Ersetzen für „AGG“
SQL Server fehlt eine integrierte String-Aggregationsfunktion, die „AGG“ ähnelt ' in der von Ihnen bereitgestellten Abfrage. Es gibt jedoch alternative Ansätze, Zeilenwerte zu einem gruppierten Ergebnis zu verketten.
Eine Lösung nutzt die Funktionen FOR XML und STUFF. Die FOR XML-Funktion wandelt das Ergebnis der inneren Abfrage in XML um, das dann mit der STUFF-Funktion verarbeitet werden kann, um XML-Tags zu entfernen und die Zeichenfolgen zu verketten. Hier ist ein Beispiel:
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
Ein anderer Ansatz nutzt die Funktionen COALESCE und ROW_NUMBER. Die Funktion COALESCE verkettet Nicht-Null-Werte, während die Funktion ROW_NUMBER eindeutige Zeilennummern innerhalb jeder Gruppe zuweist. Die folgende Abfrage verwendet diesen Ansatz:
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
Diese Ansätze bieten alternative Methoden zum Gruppieren und Verketten von Zeichenfolgen in SQL Server und ermöglichen so eine effiziente und lesbare Datenaggregation.
Das obige ist der detaillierte Inhalt vonWie kann ich eine String-Aggregation in SQL Server ohne eine „AGG'-Funktion erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!