Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2000:Ideias para realizar subconsulta de agregação de concatenação


Dê uma olhada nestes artigos:

http://dataeducation.com/rowset-string-concatenation- qual-método-é-melhor/

http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (Veja a solução de junção cruzada de Phil Factor nas respostas - que funcionará no SQL Server 2000)

Obviamente, no SQL Server 2005, o truque FOR XML é mais fácil, mais flexível e geralmente mais eficiente.

Quanto a retornar um conjunto de linhas para cada linha, se você ainda quiser fazer isso por algum motivo, poderá fazer isso em um procedimento armazenado, mas o cliente precisará consumir todas as linhas do primeiro conjunto de linhas e depois ir para o próximo rowset e associá-lo à primeira linha no primeiro conjunto de linhas, etc. Seu SP precisaria abrir um cursor no mesmo conjunto retornado como o primeiro conjunto de linhas e executar várias seleções em sequência para gerar todos os conjuntos de linhas filho. É uma técnica que eu fiz, mas apenas onde TODOS os dados realmente eram necessários (por exemplo, em uma visualização em árvore totalmente preenchida).

E, independentemente do que as pessoas digam, fazer isso do lado do cliente geralmente é um grande desperdício de largura de banda, porque retornar todas as linhas e fazer o loop e interromper o lado do cliente significa que um grande número de colunas idênticas está sendo transferido no início do cada linha apenas para obter a coluna variável no final da linha.

Onde quer que você faça isso, deve ser uma decisão informada com base em seu caso de uso.