Transformando Linhas em Colunas no SQL Server
A situação é o seguinte, você tem os dados no banco de dados em uma tabela dispostos da seguinte forma:
E deseja que os dados sejam organizados em coluna da seguinte forma:
Construindo a tabela de exemplo
create table #teste ( Id int, Nome varchar(50), Categoria varchar(50) )
Inserindo os dados na tabela de exemplo
insert into #teste values (1, 'João', 'A'), (2, 'João', 'B'), (3, 'João', 'D'), (4, 'Maria', 'A'), (5, 'Maria', 'C'), (6, 'Maria', 'D')
Verificando os dados
select * from #teste
Transformando linhas em colunas usando case
-- USANDO CASE select nome, max(case when categoria = 'A' then 'X' else '' end) CategoriaA, max(case when categoria = 'B' then 'X' else '' end) CategoriaB, max(case when categoria = 'C' then 'X' else '' end) CategoriaC, max(case when categoria = 'D' then 'X' else '' end) CategoriaD from #teste group by nome
Transformando linhas em colunas usando Join
-- USANDO JOINS select c1.nome, case when c1.Categoria is not null then 'X' else '' end as CategoriaA, case when c2.Categoria is not null then 'X' else '' end as CategoriaB, case when c3.Categoria is not null then 'X' else '' end as CategoriaC, case when c4.Categoria is not null then 'X' else '' end as CategoriaD from #teste c1 left join #teste c2 on c1.nome = c2.nome and c2.Categoria = 'B' left join #teste c3 on c1.nome = c3.nome and c3.Categoria = 'C' left join #teste c4 on c1.nome = c4.nome and c4.Categoria = 'D' where c1.Categoria = 'A'
Transformando linhas em colunas usando Pivot
-- USANDO PIVOT select nome, coalesce(A, '') CategoriaA, coalesce(B, '') CategoriaB, coalesce(C, '') CategoriaC, coalesce(C, '') CategoriaD from ( select nome, Categoria, 'X' flag from #teste ) d pivot ( max(flag) for Categoria in (A, B, C, D) ) piv
Transformando linhas em colunas usando Pivot Dinâmico
-- USANDO PIVOT DINAMICO
DECLARE @cols AS NVARCHAR(MAX),
@colsNull AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Categoria)
from #teste
group by Categoria
order by Categoria
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
select @colsNull = STUFF((SELECT ', coalesce(' + QUOTENAME(Categoria)+', '''') as '+QUOTENAME('Categoria'+Categoria)
from #teste
group by Categoria
order by Categoria
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT nome, ' + @colsNull + '
from
(
select nome, Categoria, ''X'' flag
from #teste
) x
pivot
(
max(flag)
for Categoria in (' + @cols + ')
) p '
execute(@query)
Olá! Sou Fábio Bmed — fundador da Metapax, consultoria estratégica de posicionamento e crescimento para negócios, e criador da MapexMind, um método de neuropsicologia aplicada voltado à compreensão prática da mente humana. Também sou o criador do blog FabioBmed.com.br.
Desde 2006 trabalho com tecnologia, marketing digital e análise de sistemas complexos. Mas os sistemas que mais me fascinam hoje são os que carregamos dentro da cabeça.
Estou entrando na psicologia, com foco em neuropsicologia — a ciência que explica por que você pensa, decide e se comporta do jeito que faz. Essa transição não é um desvio de rota: é a evolução natural de quem passou décadas entendendo como sistemas funcionam — e percebeu que o mais complexo de todos ainda estava por ser mapeado.
Ao longo dessa trajetória, criei dois projetos que sintetizam essa visão.
A Metapax nasceu da percepção de que negócios não crescem por acaso. Crescem quando existe uma estrutura clara de autoridade, presença e experiência do cliente. Depois de mais de duas décadas liderando operações digitais e analisando padrões de crescimento empresarial, transformei esse entendimento no Método APA — Autoridade, Presença e Atendimento — aplicado a empresas e profissionais que querem crescer com previsibilidade e posicionamento sólido.
Já a MapexMind surgiu de outro tipo de investigação: entender a arquitetura da mente humana. O projeto aplica neuropsicologia à vida real para ajudar pessoas a compreenderem padrões emocionais, cognitivos e comportamentais — próprios ou de quem amam — traduzindo conceitos complexos em clareza prática e utilizável.
No fundo, os dois projetos partem da mesma pergunta:
Como sistemas funcionam por trás da superfície?
Negócios, comportamento, decisões, relações humanas, tecnologia, marketing e mente — tudo aqui é analisado pelo mesmo prisma: estrutura, padrões e a ciência por trás de como as coisas realmente funcionam.
Este blog é o ponto de encontro dessas áreas. Um espaço onde tecnologia, psicologia, neurociência, comportamento humano, marketing e filosofia prática deixam de ser assuntos separados e passam a conversar entre si.
Publicação Criada em: fevereiro 12, 2014
Atualizado em: março 19, 2025 5:07 pm





otimo post, muito bom. Bem explicado e era exatamente o que eu precisava.
parabens
Tem realmente um grande e útil pedaço de informação.
Eu sou feliz que você apenas compartilhado isto útil informação conosco.
Por favor permanecer nos informado como este. Obrigado para partilha.
Muito Bom! Parabéns!