SQL SERVER - Dados em uma única linha
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
Curtidas 0
Melhor post
Emerson Nascimento
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
GOSTEI 1
Mais Respostas
Chromusmaster
25/10/2018
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''
GOSTEI 0