Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2000:Ideen zum Durchführen von Verkettungsaggregations-Unterabfragen

Sehen Sie sich diese Artikel an:

http://dataeducation.com/rowset-string-concatenation- welche-methode-ist-die-beste/

http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (Siehe Cross-Join-Lösung von Phil Factor in den Antworten – die in SQL Server 2000 funktioniert)

Offensichtlich ist der FOR XML-Trick in SQL Server 2005 am einfachsten, flexibelsten und im Allgemeinen am leistungsfähigsten.

Wenn Sie ein Rowset für jede Zeile zurückgeben möchten, können Sie dies aus irgendeinem Grund in einer gespeicherten Prozedur tun, aber der Client muss alle Zeilen im ersten Rowset verbrauchen und dann zum nächsten wechseln Rowset und verknüpfen Sie es mit der ersten Zeile im ersten Rowset usw. Ihr SP müsste einen Cursor auf demselben Set öffnen, das er als erstes Rowset zurückgegeben hat, und mehrere Auswahlen nacheinander ausführen, um alle untergeordneten Rowsets zu generieren. Es ist eine Technik, die ich gemacht habe, aber nur, wo ALLE die Daten tatsächlich benötigt wurden (z. B. in einer vollständig ausgefüllten Baumansicht).

Und unabhängig davon, was die Leute sagen, ist es oft eine sehr große Bandbreitenverschwendung, dies clientseitig zu tun, da das Zurückgeben aller Zeilen und das Schleifen und Brechen auf der Clientseite bedeutet, dass zu Beginn eine große Anzahl identischer Spalten übertragen wird jede Zeile, nur um die sich ändernde Spalte am Ende der Zeile zu erhalten.

Wo immer Sie es tun, es sollte eine informierte Entscheidung sein basierend auf Ihrem Anwendungsfall.