SQL SERVER - Dados em uma única linha
25/10/2018
0
Olá, boa tarde a todos. Tenho a seguinte consulta:
[SQL]
DECLARE @RA VARCHAR(30),
@P VARCHAR(MAX)
SET @RA ='0001720'
SET @P=(SELECT TEXTO
FROM SPARAM(NOLOCK)
WHERE ID = 'IDPERLET'
AND CODTIPOCURSO = 1)
SELECT PPESSOA.NOME ALUNO,
PAIS.NOME PAIS
FROM SALUNO (NOLOCK)
INNER JOIN SPESSOA (NOLOCK)
ON SPESSOA.CODIGO = SALUNO.CODPESSOA
INNER JOIN PPESSOA (NOLOCK)
ON PPESSOA.CODIGO = SALUNO.CODPESSOA
INNER JOIN VFILIACAO (NOLOCK) ON
VFILIACAO.CODPESSOAFILHO=PPESSOA.CODIGO
INNER JOIN PPESSOA PAIS (NOLOCK)
ON PAIS .CODIGO = VFILIACAO.CODPESSOAFILIACAO
INNER JOIN PCODNACAO (NOLOCK)
ON PCODNACAO.CODCLIENTE = PPESSOA.NACIONALIDADE
INNER JOIN PCODESTCIVIL (NOLOCK)
ON PCODESTCIVIL.CODCLIENTE = PPESSOA.ESTADOCIVIL
INNER JOIN SHABILITACAOALUNO (NOLOCK)
ON SHABILITACAOALUNO.CODCOLIGADA = SALUNO.CODCOLIGADA
AND SHABILITACAOALUNO.RA = SALUNO.RA
INNER JOIN SMATRICPL (NOLOCK)
ON SMATRICPL.RA =SHABILITACAOALUNO.RA
AND SMATRICPL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SMATRICPL.IDHABILITACAOFILIAL=SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SHABILITACAOFILIAL (NOLOCK)
ON SHABILITACAOFILIAL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SPLETIVO (NOLOCK) ON
SPLETIVO.IDPERLET=SMATRICPL.IDPERLET AND
SPLETIVO.CODCOLIGADA=SMATRICPL.CODCOLIGADA AND
SPLETIVO.CODFILIAL=SMATRICPl.CODFILIAL AND
SPLETIVO.CODTIPOCURSO=SHABILITACAOFILIAL.CODTIPOCURSO
INNER JOIN SCURSO (NOLOCK)
ON SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
AND SCURSO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA
WHERE SALUNO.RA = @RA
AND SMATRICPL.IDPERLET = @P
AND SHABILITACAOALUNO.CODSTATUS = '12'
AND CONVERT(DATE, GETDATE()) <= SPLETIVO.DTFIM
[/SQL]
Que retorna os dados em tres linha diferentes:
Danielle Ribeiro Gaioto Luci Aparecida Ribeiro Gaioto
Danielle Ribeiro Gaioto José Francisco Gaioto
Danielle Ribeiro Gaioto João Gonçalves da Cruz
Precisava de fazer com que os dados ficassem em uma única linha. Alguem sabe como?
[SQL]
DECLARE @RA VARCHAR(30),
@P VARCHAR(MAX)
SET @RA ='0001720'
SET @P=(SELECT TEXTO
FROM SPARAM(NOLOCK)
WHERE ID = 'IDPERLET'
AND CODTIPOCURSO = 1)
SELECT PPESSOA.NOME ALUNO,
PAIS.NOME PAIS
FROM SALUNO (NOLOCK)
INNER JOIN SPESSOA (NOLOCK)
ON SPESSOA.CODIGO = SALUNO.CODPESSOA
INNER JOIN PPESSOA (NOLOCK)
ON PPESSOA.CODIGO = SALUNO.CODPESSOA
INNER JOIN VFILIACAO (NOLOCK) ON
VFILIACAO.CODPESSOAFILHO=PPESSOA.CODIGO
INNER JOIN PPESSOA PAIS (NOLOCK)
ON PAIS .CODIGO = VFILIACAO.CODPESSOAFILIACAO
INNER JOIN PCODNACAO (NOLOCK)
ON PCODNACAO.CODCLIENTE = PPESSOA.NACIONALIDADE
INNER JOIN PCODESTCIVIL (NOLOCK)
ON PCODESTCIVIL.CODCLIENTE = PPESSOA.ESTADOCIVIL
INNER JOIN SHABILITACAOALUNO (NOLOCK)
ON SHABILITACAOALUNO.CODCOLIGADA = SALUNO.CODCOLIGADA
AND SHABILITACAOALUNO.RA = SALUNO.RA
INNER JOIN SMATRICPL (NOLOCK)
ON SMATRICPL.RA =SHABILITACAOALUNO.RA
AND SMATRICPL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SMATRICPL.IDHABILITACAOFILIAL=SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SHABILITACAOFILIAL (NOLOCK)
ON SHABILITACAOFILIAL.CODCOLIGADA = SHABILITACAOALUNO.CODCOLIGADA
AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOALUNO.IDHABILITACAOFILIAL
INNER JOIN SPLETIVO (NOLOCK) ON
SPLETIVO.IDPERLET=SMATRICPL.IDPERLET AND
SPLETIVO.CODCOLIGADA=SMATRICPL.CODCOLIGADA AND
SPLETIVO.CODFILIAL=SMATRICPl.CODFILIAL AND
SPLETIVO.CODTIPOCURSO=SHABILITACAOFILIAL.CODTIPOCURSO
INNER JOIN SCURSO (NOLOCK)
ON SCURSO.CODCURSO = SHABILITACAOFILIAL.CODCURSO
AND SCURSO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA
WHERE SALUNO.RA = @RA
AND SMATRICPL.IDPERLET = @P
AND SHABILITACAOALUNO.CODSTATUS = '12'
AND CONVERT(DATE, GETDATE()) <= SPLETIVO.DTFIM
[/SQL]
Que retorna os dados em tres linha diferentes:
Danielle Ribeiro Gaioto Luci Aparecida Ribeiro Gaioto
Danielle Ribeiro Gaioto José Francisco Gaioto
Danielle Ribeiro Gaioto João Gonçalves da Cruz
Precisava de fazer com que os dados ficassem em uma única linha. Alguem sabe como?
Chromusmaster
Curtir tópico
+ 0
Responder
Post mais votado
26/10/2018
veja este artigo:
https://vladimirrech.blogspot.com/2014/02/pivot-dinamico-com-sql-server.html
https://vladimirrech.blogspot.com/2014/02/pivot-dinamico-com-sql-server.html
Emerson Nascimento
Responder
Mais Posts
26/10/2018
Chromusmaster
Pivot nesse caso não me auxiliaria, preciso jogar ela dentro de um sistema depois. Consegui da seguinte maneira:<br />
DECLARE @RA VARCHAR(30),<br /> @P VARCHAR(max)<br /> <br /> SET @RA =''0001720''<br /> SET @P=(SELECT texto<br /> FROM sparam(nolock)<br /> WHERE id = ''IDPERLET''<br /> AND codtipocurso = 1)<br /> <br /> SELECT DISTINCT<br /> ppessoa.nome ALUNO,<br /> (SELECT periodo<br /> FROM smatricpl<br /> WHERE ra = saluno.ra<br /> AND smatricpl.codcoligada = saluno.codcoligada<br /> AND smatricpl.idhabilitacaofilial =<br /> shabilitacaoaluno.idhabilitacaofilial<br /> AND smatricpl.codfilial = shabilitacaofilial.codfilial<br /> AND smatricpl.idperlet = @P) PERIODO,<br /> (SELECT nome<br /> FROM scurso<br /> WHERE scurso.codcurso = shabilitacaofilial.codcurso<br /> AND scurso.codcoligada = shabilitacaofilial.codcoligada) CURSO,<br /> pcodnacao.descricao<br /> NACIONALIDADE,<br /> pcodestcivil.descricao AS<br /> ESTADOCIVIL,<br /> ppessoa.naturalidade AS<br /> CIDADENATAL,<br /> ppessoa.dtnascimento,<br /> Stuff((SELECT '','' + PAIS.nome PAIS<br /> FROM saluno (nolock)<br /> INNER JOIN spessoa (nolock)<br /> ON spessoa.codigo = saluno.codpessoa<br /> INNER JOIN ppessoa (nolock)<br /> ON ppessoa.codigo = saluno.codpessoa<br /> INNER JOIN vfiliacao (nolock)<br /> ON vfiliacao.codpessoafilho = ppessoa.codigo<br /> INNER JOIN ppessoa PAIS (nolock)<br /> ON PAIS .codigo = vfiliacao.codpessoafiliacao<br /> WHERE saluno.ra = @RA<br /> FOR xml path(''''), type).value(''.'', ''varchar(max)''), 1, 1, '''') AS Products<br /> FROM saluno (nolock)<br /> INNER JOIN spessoa (nolock)<br /> ON spessoa.codigo = saluno.codpessoa<br /> INNER JOIN ppessoa (nolock)<br /> ON ppessoa.codigo = saluno.codpessoa<br /> INNER JOIN vfiliacao (nolock)<br /> ON vfiliacao.codpessoafilho = ppessoa.codigo<br /> INNER JOIN ppessoa PAIS (nolock)<br /> ON PAIS .codigo = vfiliacao.codpessoafiliacao<br /> INNER JOIN pcodnacao (nolock)<br /> ON pcodnacao.codcliente = ppessoa.nacionalidade<br /> INNER JOIN pcodestcivil (nolock)<br /> ON pcodestcivil.codcliente = ppessoa.estadocivil<br /> INNER JOIN shabilitacaoaluno (nolock)<br /> ON shabilitacaoaluno.codcoligada = saluno.codcoligada<br /> AND shabilitacaoaluno.ra = saluno.ra<br /> INNER JOIN shabilitacaofilial (nolock)<br /> ON shabilitacaofilial.codcoligada = shabilitacaoaluno.codcoligada<br /> AND shabilitacaofilial.idhabilitacaofilial =<br /> shabilitacaoaluno.idhabilitacaofilial<br /> WHERE saluno.ra = @RA<br /> AND shabilitacaoaluno.codstatus = ''12''
Responder
Clique aqui para fazer login e interagir na Comunidade :)