Pivot dinâmico para transformar resultado de linhas em colunas
Boa tarde,
após dias tentando resolver a questão e depois de buscar inúmeras soluções aqui no fórum e na internet em geral acabei decidindo pedir ajuda.
Tenho que fazer uma listagem em meu banco relacionando em colunas uma informação que consigo facilmente obter em linhas.
Uso a seguinte sentença:
SELECT PPESSOA.NOME, P.NOME AS PAI, P.EMAIL AS EMAILPAI,
M.NOME AS MAE, M.EMAIL AS EMAILMAE
FROM SALUNO, SMATRICPL, SHABILITACAOFILIAL, SCURSO, SPLETIVO, SSTATUS, PPESSOA,
SPESSOA
LEFT OUTER JOIN PPESSOA P ON SPESSOA.CODPESSOAPAI = P.CODIGO
LEFT OUTER JOIN PPESSOA M ON SPESSOA.CODPESSOAMAE = M.CODIGO
WHERE
SALUNO.RA = SMATRICPL.RA AND
SALUNO.CODPESSOA = SPESSOA.CODIGO AND
SPESSOA.CODIGO = PPESSOA.CODIGO AND
SMATRICPL.IDPERLET = SPLETIVO.IDPERLET AND
SMATRICPL.CODSTATUS = SSTATUS.CODSTATUS AND
SMATRICPL.IDHABILITACAOFILIAL = SHABILITACAOFILIAL.IDHABILITACAOFILIAL and
shabilitacaofilial.codcurso = scurso.codcurso and
shabilitacaofilial.codfilial = SPLETIVO.CODFILIAL
E ela me resulta o nome do aluno, nome do pai, email do pai, nome da mãe e email da mãe.
A questão é a seguinte, caso um pai possua 2 filhos, eles saem em linhas, por exemplo:
ALAN M*** | PAULO A | A@.COM | S GONÇALVES | S***@IG.COM.BR
LUIZA M*** | PAULO A | A@.COM | S GONÇALVES | S***@IG.COM.BR
Gostaria que fosse feito um agrupamento usando algum campo em comum (nome do pai, por exemplo) e os filhos saíssem em colunas, dessa forma:
ALAN M*** | LUIZA M | PAULO A | A@.COM | S* GONÇALVES | S***@IG.COM.BR
Um dos problemas é que os pais não possuem número fixo de filhos e isso está me deixando louco sobre como poderia usar o PIVOT ou alguma outra solução para resolver.
Espero que não tenha ficado muito complicado para entender, qualquer coisa favor perguntarem, espero que alguém possa me ajudar com alguma solução. Obrigado.
Discussão (2)
Carregando comentários...