Dados em uma unica linha
03/04/2018
0
STIPOCURSO.NOME AS [NÍVEL DE ENSINO],
SPL.CODPERLET AS [ANO],
STURMA.NOME AS [TURMA],
STURNO.NOME AS [TURNO],
SD.NOME AS [DISCIPLINA],
SPT.AULASSEMANAISPROF AS [AULAS SEMANAIS]
FROM SPROFESSOR SP (NOLOCK)
INNER JOIN PPESSOA P On P.CODIGO=SP.CODPESSOA
INNER JOIN SPROFESSORTURMA SPT (NOLOCK)
ON SP.CODCOLIGADA = SPT.CODCOLIGADA
AND SP.CODPROF = SPT.CODPROF
INNER JOIN STURMADISC ST (NOLOCK)
ON SPT.CODCOLIGADA = ST.CODCOLIGADA
AND SPT.IDTURMADISC = ST.IDTURMADISC
INNER JOIN SPLETIVO SPL (NOLOCK)
ON ST.IDPERLET = SPL.IDPERLET
AND ST.CODCOLIGADA = SPL.CODCOLIGADA
INNER JOIN STURNO (NOLOCK)
ON ST.CODCOLIGADA = STURNO.CODCOLIGADA
AND ST.CODTURNO = STURNO.CODTURNO
INNER JOIN SDISCIPLINA SD (NOLOCK)
ON ST.CODCOLIGADA = SD.CODCOLIGADA
AND ST.CODDISC = SD.CODDISC
INNER JOIN STIPOCURSO (NOLOCK)
ON SD.CODTIPOCURSO = STIPOCURSO.CODTIPOCURSO
AND SD.CODCOLIGADA = STIPOCURSO.CODCOLIGADA
INNER JOIN STURMA (NOLOCK)
ON ST.CODTURMA = STURMA.CODTURMA
AND SPL.IDPERLET = STURMA.IDPERLET
WHERE STURMA.IDPERLET = 109
AND STURMA.CODTURMA = '3ª Série JA'
GROUP BY
P.NOME,
STIPOCURSO.NOME,
SPL.CODPERLET,
STURMA.NOME,
STURNO.NOME,
SPT.AULASSEMANAISPROF,
SD.NOME
Como posso fazer para trazer o nome dos dois professores da disciplina na mesma linha ?
Chromusmaster
Posts
05/04/2018
Carlos Natividade
Podes utilizar a função STRING_AGG:
SELECT STRING_AGG (FirstName, CHAR(13)) AS csv
FROM Person.Person;
Dê uma olhada em: https://docs.microsoft.com/pt-br/sql/t-sql/functions/string-agg-transact-sql
05/04/2018
Chromusmaster
Att. Nathann Lucas
27/04/2018
Jerson Boer
SELECT CodigoTipoFluxo AS 'Código', TipoFluxo AS 'Tipo de Fluxo', LEFT(REPLACE(REPLACE((SELECT Etapas.Etapa as Campo FROM TipoFluxoEtapas INNER JOIN Etapas ON TipoFluxoEtapas.CodigoEtapa = Etapas.CodigoEtapa WHERE (TipoFluxoEtapas.CodigoTipoFluxo = TipoFluxo.CodigoTipoFluxo) ORDER BY TipoFluxoEtapas.Sequencia FOR XML RAW('A')), '<A Campo="', ''), '"/>', ', '), LEN(REPLACE(REPLACE((SELECT Etapas.Etapa as Campo FROM TipoFluxoEtapas INNER JOIN Etapas ON TipoFluxoEtapas.CodigoEtapa = Etapas.CodigoEtapa WHERE (TipoFluxoEtapas.CodigoTipoFluxo = TipoFluxo.CodigoTipoFluxo) ORDER BY TipoFluxoEtapas.Sequencia FOR XML RAW('A')), '<A Campo="', ''), '"/>', ', '))-1) AS 'Etapas do Fluxo' FROM TipoFluxo ORDER BY TipoFluxo
No exemplo acima, eu tenho uma tabela de Fluxo e em cada fluxo existem etapas. O uso do FOR XML me trás o nome das etapas em um mesmo campo.
Tente realizar a leitura do código e a adaptação à sua necessidade e qualquer coisa retorne e avaliamos novamente.
Clique aqui para fazer login e interagir na Comunidade :)