Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2000 :Idées pour effectuer une sous-requête d'agrégation de concaténation

Consultez ces articles :

http://dataeducation.com/rowset-string-concatenation- quelle-méthode-est-la-meilleure/

http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (Voir la solution de jointure croisée de Phil Factor dans les réponses - qui fonctionnera dans SQL Server 2000)

De toute évidence, dans SQL Server 2005, l'astuce FOR XML est la plus simple, la plus flexible et généralement la plus performante.

En ce qui concerne le retour d'un ensemble de lignes pour chaque ligne, si vous souhaitez toujours le faire pour une raison quelconque, vous pouvez le faire dans une procédure stockée, mais le client devra consommer toutes les lignes du premier ensemble de lignes, puis passer au suivant. ensemble de lignes et associez-le à la première ligne du premier ensemble de lignes, etc. Votre SP devrait ouvrir un curseur sur le même ensemble qu'il a renvoyé comme premier ensemble de lignes et exécuter plusieurs sélections en séquence pour générer tous les ensembles de lignes enfants. C'est une technique que j'ai pratiquée, mais seulement là où TOUS les données étaient réellement nécessaires (par exemple, dans une arborescence entièrement remplie).

Et peu importe ce que les gens disent, le faire côté client est souvent un très gros gaspillage de bande passante, car renvoyer toutes les lignes et faire la boucle et la rupture côté client signifie qu'un grand nombre de colonnes identiques sont transférées au début de chaque ligne juste pour obtenir la colonne changeante à la fin de la ligne.

Où que vous le fassiez, cela devrait être une décision éclairée en fonction de votre cas d'utilisation.