これらの記事をご覧ください:
http://dataeducation.com/rowset-string-concatenation- which-method-is-best /
http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (応答のPhilFactorのクロスジョインソリューションを参照してください。これはSQLServer2000で機能します)
明らかに、SQL Server 2005では、FOR XMLのトリックが最も簡単で、最も柔軟性があり、一般的に最もパフォーマンスが高くなっています。
各行の行セットを返す限り、何らかの理由でそれを実行したい場合は、ストアドプロシージャで実行できますが、クライアントは最初の行セットのすべての行を消費してから、次の行に移動する必要があります。行セットを作成し、最初の行セットの最初の行に関連付けます。SPは、最初の行セットと同じセットでカーソルを開き、複数の選択を順番に実行して、すべての子行セットを生成する必要があります。これは私が行ったテクニックですが、すべて データは実際に必要でした(たとえば、完全に入力されたツリービューで)。
そして、人々が何を言おうと、クライアント側でそれを行うことは、多くの場合、帯域幅の非常に大きな浪費です。なぜなら、すべての行を返し、クライアント側でループとブレークを行うことは、開始時に膨大な数の同一の列が転送されることを意味するからです。各行は、行の最後にある変化する列を取得するためだけのものです。
どこでそれを行うにしても、それは情報に基づいた決定でなければなりません あなたのに基づく ユースケース。