Zapoznaj się z tymi artykułami:
http://dataeducation.com/rowset-string-concatenation- która-metoda-jest-najlepsza/
http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (W odpowiedziach zobacz rozwiązanie krzyżowego łączenia Phil Factora - które będzie działać w SQL Server 2000)
Oczywiście w SQL Server 2005 sztuczka FOR XML jest najłatwiejsza, najbardziej elastyczna i ogólnie najbardziej wydajna.
Jeśli chodzi o zwrócenie zestawu wierszy dla każdego wiersza, jeśli z jakiegoś powodu nadal chcesz to zrobić, możesz to zrobić w procedurze składowanej, ale klient będzie musiał wykorzystać wszystkie wiersze w pierwszym zestawie wierszy, a następnie przejść do następnego zestaw wierszy i skojarzyć go z pierwszym wierszem w pierwszym zestawie wierszy itp. Twój SP musiałby otworzyć kursor w tym samym zestawie, który zwrócił jako pierwszy zestaw wierszy i uruchomić wiele zaznaczeń w kolejności, aby wygenerować wszystkie zestawy wierszy podrzędnych. To technika, którą zrobiłem, ale tylko wtedy, gdy WSZYSTKO dane faktycznie były potrzebne (na przykład w pełni wypełnionym widoku drzewa).
I niezależnie od tego, co mówią ludzie, robienie tego po stronie klienta jest często bardzo dużym marnotrawstwem przepustowości, ponieważ zwracanie wszystkich wierszy i wykonywanie pętli i łamanie po stronie klienta oznacza, że ogromna liczba identycznych kolumn jest przesyłana na początku każdy wiersz, aby uzyskać zmieniającą się kolumnę na końcu wiersza.
Gdziekolwiek to robisz, powinna to być świadoma decyzja na podstawie Twojego przypadek użycia.