Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server 2000:idee per l'esecuzione di sottoquery di aggregazione di concatenazione

Dai un'occhiata a questi articoli:

http://dataeducation.com/rowset-string-concatenation- quale-metodo-è-migliore/

http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (Vedi la soluzione cross join di Phil Factor nelle risposte, che funzionerà in SQL Server 2000)

Ovviamente in SQL Server 2005, il trucco FOR XML è più semplice, più flessibile e generalmente più performante.

Per quanto riguarda la restituzione di un set di righe per ogni riga, se vuoi comunque farlo per qualche motivo, puoi farlo in una procedura memorizzata, ma il client dovrà consumare tutte le righe nel primo set di righe e quindi passare al successivo set di righe e associarlo alla prima riga nel primo set di righe, ecc. Il tuo SP dovrebbe aprire un cursore sullo stesso set restituito come primo set di righe ed eseguire selezioni multiple in sequenza per generare tutti i set di righe figlio. È una tecnica che ho fatto, ma solo dove TUTTI i dati erano effettivamente necessari (ad esempio, in una vista ad albero completamente popolata).

E indipendentemente da quello che dicono le persone, farlo lato client è spesso un enorme spreco di larghezza di banda, perché restituire tutte le righe ed eseguire il looping e l'interruzione sul lato client significa che un numero enorme di colonne identiche viene trasferito all'inizio di ogni riga solo per ottenere la colonna che cambia alla fine della riga.

Ovunque tu lo faccia, dovrebbe essere una decisione informata in base al tuo caso d'uso.