TSQL – Agrupar várias linhas em uma

Fala Galera,

Estou trabalhando na atualização de alguns scripts de monitoração de SQL Server que eu uso na empresa e acabei parando em um problema:

capturar

Precisava agrupar várias linhas em uma única, separada por espaço. Moleza, né? Fazemos um cursor e tudo resolvido…

é…nop.
Acontece que, por ser um script de monitoração, ele tem de ter o mínimo de overhead possível.

Bom, depois de consultar alguns livros e fazer algumas pesquisas, a solução acabou sendo bem simples:

</pre>
order by nome for xml path('')
<pre>

mas só isso resolve meu problema? vamos ver…

Primeiro vou criar uma variavel tabular e popula-la com alguns registros fake:

DECLARE @TABLE AS TABLE (id int identity, grupo varchar(100), nome varchar(100))
insert into @TABLE (grupo, nome)
values
('Amigos do Buteco','Jose'),
('Amigos do Buteco','Rene'),
('Amigos do Buteco','Diego'),
('Amigos da Trabalho','Rodolfo'),
('Amigos da Trabalho','Ramos'),
('Amigos da Trabalho','Tatiane'),
('Amigos da Trabalho','Leonardo'),
('Amigos de infância','Henrique'),
('Amigos de infância','Lucas'),
('Amigos de infância','Carlos')

--consulta cruzando pelo nome do grupo
select distinct grupo, (
 select nome from @TABLE interno
 where interno.grupo = externo.grupo
 order by nome for xml path('')
) detalhes_
 from @TABLE externo

capturar

O resultado é bem próximo do que eu preciso, só que ainda falta remover estas tags XML.

Basta nomear a coluna como “[data()]” e o SQL Server faz o resto =D


select distinct grupo, (
 select nome as [data()] from @TABLE interno
 where interno.grupo = externo.grupo
 order by nome for xml path('')
) detalhes_
 from @TABLE externo

capturar

Por hoje é isso.

Piroto

Anúncios

Sobre dhiegopiroto
Graduando em Sistemas de Informação, apaixonado por tecnologia, literatura e musica. Possui experiencia com desenvolvimento em T-SQL, XML, XSD e administração de bancos de dados SQL Server; Detém os titulos de MCP e MCTS SQL Server 2008.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Alex Souza

Banco de dados, Business Intelligence, Big Data, Governança de TI ... /* Um eterno aprendiz... */

Blog - Thiago Carlos de Alencar

Aprendendo SQL Server !

SQL Authority with Pinal Dave

SQL Server Performance Tuning Expert

Vitor Fava

SELECT (CrazyIdeas*2), (InsaneIdeas*100), MyExperience FROM MyBigHead WHERE InsaneLevel > 1000

Think Think SQL

DBCC DumpMemory 'TECH','ALL'

Gustavo Maia Aguiar

Artigos, dicas e algumas reflexões sobre o SQL Server

Kimberly L. Tripp

DBCC DumpMemory 'TECH','ALL'

Thiago Zavaschi R2

www.zavaschi.com

Blog do Luti

DBCC DumpMemory 'TECH','ALL'

Luan.Moreno a.k.a [SQL.Soul]

Lead Database Consultant at Pythian

Blog do Leka

let's make things better

%d blogueiros gostam disto: