Usuário com melhor resposta
em uma query SQL, trazer valores de linhas em uma só linha agrupados?

Pergunta
-
Pessoal preciso trazer uma lista de tipo 3 itens com as mesmas chaves mas com uma valor de coluna diferente na mesma linha tipo assim:
Tenho a seguinte Query:
SELECT DISTINCT CPF, SchoolID FROM Ecoe.CandudateUnits WHERE (CPF = 342199609)
Que me traz o seguinte resultado:
CPF SchoolID
342199609 1501
342199609 1801
342199609 2701
342199609 5701Mas preciso que o resiltado seja:
CPF SchoolID
342199609 1501 1801 2701 2701Uma especie de pivot mais os valores da schoolid ficassem na mesma coluna agrupados, tipo uma string com espaços entre um e outro.
Fico no aguardo.
Att.
Moizés Cerqueira | MCP / MCTS SQL SERVER
Respostas
-
Roberto, desta forma funcionou a tendeu perfeitamente.
Agora minha dúvida é como usar isso em um sub select.
Tipo:
(SELECT COUNT(CandidateID) AS Valor FROM Ecoe.Candidate WHERE (CPF = G.CPF ))As Qtd_Alunos, (SELECT COUNT(SchoolID) AS Valor FROM Ecoe.CandudateUnits WHERE (CPF = G.CPF ))As Unidades, (SELECT SUM(Value) AS Valor FROM Ecoe.Rents WHERE (CPF = G.CPF ))As Rents, (SELECT COUNT(RentsID) AS ID FROM Ecoe.Rents WHERE (CPF = G.CPF))As Total, (SELECT SUM(Value) AS Despesas FROM Ecoe.Expenses WHERE (CPF = G.CPF))As tDespesas, --DECLARE @CD_CPF bigint = 342199609 (SELECT G.CPF, CONVERT(varchar, (select SchoolID + ' ' FROM Ecoe.CandudateUnits WHERE CPF = G.CPF FOR XML PATH ('')) ) AS es)AS Escolas FROM Ecoe.Guardian AS G ORDER BY G.CPF
Moizés Cerqueira | MCP / MCTS SQL SERVER
Moizés,
Segue um script T-SQL reaproveitando todos os CPF´s para uma subquery, assim você adaptar à sua consulta:
DECLARE @Candidatos TABLE ( CPF varchar(14), School varchar(5) ) INSERT INTO @Candidatos VALUES ('342199609','1501'), ('342199609','1801'), ('342199609','2701'), ('123456789','1111'), ('123456789','1234'), ('342199609','5701'); SELECT DISTINCT TBL.CPF, CONVERT(varchar, (select School + ' ' FROM @Candidatos WHERE CPF = TBL.CPF FOR XML PATH ('')) ) from @Candidatos as TBL;
Segue abaixo a evidência do teste:
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Moizés Cerqueira quinta-feira, 16 de outubro de 2014 17:49
-
Moizes,
Segue abaixo um script T-SQL para você adaptar às suas necessidades.
DECLARE @Candidatos TABLE ( CPF varchar(14), School varchar(5) ) INSERT INTO @Candidatos VALUES ('342199609','1501'), ('342199609','1801'), ('342199609','2701'), ('123456789','1111'), ('123456789','1234'), ('342199609','5701'); SELECT * FROM @Candidatos DECLARE @CD_CPF VARCHAR(14) = '342199609' SELECT @CD_CPF AS CPF, CONVERT(varchar, (select School + ' ' FROM @Candidatos WHERE CPF = @CD_CPF FOR XML PATH ('')) ) AS Escolas;
Segue a evidência de teste:
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Roberto F FonsecaModerator quinta-feira, 16 de outubro de 2014 03:31
- Marcado como Resposta Moizés Cerqueira quinta-feira, 16 de outubro de 2014 17:49
Todas as Respostas
-
Boa noite,
Moizés, confira o exemplo do tópico abaixo:
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Roberto F FonsecaModerator quinta-feira, 16 de outubro de 2014 03:32
-
-
Moizes,
Segue abaixo um script T-SQL para você adaptar às suas necessidades.
DECLARE @Candidatos TABLE ( CPF varchar(14), School varchar(5) ) INSERT INTO @Candidatos VALUES ('342199609','1501'), ('342199609','1801'), ('342199609','2701'), ('123456789','1111'), ('123456789','1234'), ('342199609','5701'); SELECT * FROM @Candidatos DECLARE @CD_CPF VARCHAR(14) = '342199609' SELECT @CD_CPF AS CPF, CONVERT(varchar, (select School + ' ' FROM @Candidatos WHERE CPF = @CD_CPF FOR XML PATH ('')) ) AS Escolas;
Segue a evidência de teste:
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Roberto F FonsecaModerator quinta-feira, 16 de outubro de 2014 03:31
- Marcado como Resposta Moizés Cerqueira quinta-feira, 16 de outubro de 2014 17:49
-
Roberto, desta forma funcionou a tendeu perfeitamente.
Agora minha dúvida é como usar isso em um sub select.
Tipo:
(SELECT COUNT(CandidateID) AS Valor FROM Ecoe.Candidate WHERE (CPF = G.CPF ))As Qtd_Alunos, (SELECT COUNT(SchoolID) AS Valor FROM Ecoe.CandudateUnits WHERE (CPF = G.CPF ))As Unidades, (SELECT SUM(Value) AS Valor FROM Ecoe.Rents WHERE (CPF = G.CPF ))As Rents, (SELECT COUNT(RentsID) AS ID FROM Ecoe.Rents WHERE (CPF = G.CPF))As Total, (SELECT SUM(Value) AS Despesas FROM Ecoe.Expenses WHERE (CPF = G.CPF))As tDespesas, --DECLARE @CD_CPF bigint = 342199609 (SELECT G.CPF, CONVERT(varchar, (select SchoolID + ' ' FROM Ecoe.CandudateUnits WHERE CPF = G.CPF FOR XML PATH ('')) ) AS es)AS Escolas FROM Ecoe.Guardian AS G ORDER BY G.CPF
Moizés Cerqueira | MCP / MCTS SQL SERVER
-
Roberto, desta forma funcionou a tendeu perfeitamente.
Agora minha dúvida é como usar isso em um sub select.
Tipo:
(SELECT COUNT(CandidateID) AS Valor FROM Ecoe.Candidate WHERE (CPF = G.CPF ))As Qtd_Alunos, (SELECT COUNT(SchoolID) AS Valor FROM Ecoe.CandudateUnits WHERE (CPF = G.CPF ))As Unidades, (SELECT SUM(Value) AS Valor FROM Ecoe.Rents WHERE (CPF = G.CPF ))As Rents, (SELECT COUNT(RentsID) AS ID FROM Ecoe.Rents WHERE (CPF = G.CPF))As Total, (SELECT SUM(Value) AS Despesas FROM Ecoe.Expenses WHERE (CPF = G.CPF))As tDespesas, --DECLARE @CD_CPF bigint = 342199609 (SELECT G.CPF, CONVERT(varchar, (select SchoolID + ' ' FROM Ecoe.CandudateUnits WHERE CPF = G.CPF FOR XML PATH ('')) ) AS es)AS Escolas FROM Ecoe.Guardian AS G ORDER BY G.CPF
Moizés Cerqueira | MCP / MCTS SQL SERVER
Moizés,
Segue um script T-SQL reaproveitando todos os CPF´s para uma subquery, assim você adaptar à sua consulta:
DECLARE @Candidatos TABLE ( CPF varchar(14), School varchar(5) ) INSERT INTO @Candidatos VALUES ('342199609','1501'), ('342199609','1801'), ('342199609','2701'), ('123456789','1111'), ('123456789','1234'), ('342199609','5701'); SELECT DISTINCT TBL.CPF, CONVERT(varchar, (select School + ' ' FROM @Candidatos WHERE CPF = TBL.CPF FOR XML PATH ('')) ) from @Candidatos as TBL;
Segue abaixo a evidência do teste:
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval Ramos
Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
----------------------------------
Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Moizés Cerqueira quinta-feira, 16 de outubro de 2014 17:49