Lucas boa tarde.
Sou novo aqui no forum então nem sei se essa sua dúvida já foi resolvida.
Dei uma olhada na sua consulta e reparei o seguinte, nas suas subqueries que você faz pra retornar os dados do pai e da mãe do aluno você faz duas comparações distintas para o mesmo campo, uma no JOIN e outra no WHERE:
(SELECT PP.DTNASCIMENTO
FROM SPESSOA SP
INNER JOIN PPESSOA PP ON
PP.CODIGO = SP.CODPESSOAPAI
WHERE PP.CODIGO = SP.CODIGO
AND PP.CODIGO = PPS.CODIGO) AS DTNASCPAI,
Aqui, no caso, você compara no INNER JOIN o PP.CODIGO com o SP.CODPESSOAPAI e no WHERE você compara o PP.CODIGO com SP.CODIGO. Com esta comparação a pessoa tem que ser igual ao pai dessa mesma pessoa, por isso não traz nada.
Abaixo eu copio um código que eu tinha aqui e dei uma adaptada pro seu uso. Veja se te ajuda. Eu não trabalhei com subqueries, apenas com um JOIN diretamente do SPESSOA:
SELECT PPESSOA_ALUNO.CODIGO AS ALUNO_CODPESSOA,
SALUNO.RA AS ALUNO_RA,
PPESSOA_ALUNO.NOME AS ALUNO_NOME,
PPESSOA_ALUNO.DTNASCIMENTO AS ALUNO_DATA_NASCIMENTO,
PPESSOA_ALUNO.SEXO AS ALUNO_SEXO,
PPESSOA_ALUNO.NACIONALIDADE AS ALUNO_NACIONALIDADE,
NACIONALIDADE_ALUNO.DESCRICAO
AS ALUNO_NACIONALIDADE_DESCRICAO,
PPESSOA_ALUNO.NATURALIDADE AS ALUNO_NATURALIDADE,
PPESSOA_ALUNO.RUA AS ALUNO_ENDERECO_RUA,
PPESSOA_ALUNO.NUMERO AS ALUNO_ENDERECO_NUMERO,
PPESSOA_ALUNO.COMPLEMENTO AS ALUNO_ENDERECO_COMPLEMENTO,
PPESSOA_ALUNO.BAIRRO AS ALUNO_ENDERECO_BAIRRO,
PPESSOA_ALUNO.CIDADE AS ALUNO_ENDERECO_CIDADE,
PPESSOA_ALUNO.ESTADO AS ALUNO_ENDERECO_UF,
PPESSOA_ALUNO.CEP AS ALUNO_ENDERECO_CEP,
PPESSOA_ALUNO.PAIS AS ALUNO_ENDERECO_PAIS,
PPESSOA_ALUNO.TELEFONE1 AS ALUNO_TELEFONE_FIXO,
PPESSOA_ALUNO.TELEFONE2 AS ALUNO_TELEFONE_CELULAR,
PPESSOA_ALUNO.CARTIDENTIDADE
AS ALUNO_IDENTIDADE,
PPESSOA_ALUNO.UFCARTIDENT AS ALUNO_IDENTIDADE_UF,
PPESSOA_ALUNO.ORGEMISSORIDENT
AS ALUNO_IDENTIDADE_EMISSOR,
PPESSOA_ALUNO.CPF AS ALUNO_CPF,
PPESSOA_PAI.NOME AS PAI_NOME,
PPESSOA_PAI.DTNASCIMENTO AS PAI_DATA_NASCIMENTO,
PPESSOA_PAI.NACIONALIDADE AS PAI_NACIONALIDADE,
NACIONALIDADE_PAI.DESCRICAO AS PAI_NACIONALIDADE_DESCRICAO,
PPESSOA_PAI.NATURALIDADE AS PAI_NATURALIDADE,
PPESSOA_MAE.NOME AS MAE_NOME,
PPESSOA_MAE.DTNASCIMENTO AS MAE_DATA_NASCIMENTO,
PPESSOA_MAE.NACIONALIDADE AS MAE_NACIONALIDADE,
NACIONALIDADE_MAE.DESCRICAO AS MAE_NACIONALIDADE_DESCRICAO,
PPESSOA_MAE.NATURALIDADE AS MAE_NATURALIDADE
FROM PPESSOA AS PPESSOA_ALUNO
INNER JOIN SALUNO ON
PPESSOA_ALUNO.CODIGO = SALUNO.CODPESSOA
LEFT JOIN PCODNACAO AS NACIONALIDADE_ALUNO ON
PPESSOA_ALUNO.NACIONALIDADE = NACIONALIDADE_ALUNO.CODCLIENTE
LEFT JOIN SPESSOA ON
PPESSOA_ALUNO.CODIGO = SPESSOA.CODIGO
LEFT JOIN PPESSOA AS PPESSOA_PAI ON
SPESSOA.CODPESSOAPAI = PPESSOA_PAI.CODIGO
LEFT JOIN PCODNACAO AS NACIONALIDADE_PAI ON
PPESSOA_PAI.NACIONALIDADE = NACIONALIDADE_PAI.CODCLIENTE
LEFT JOIN PPESSOA AS PPESSOA_MAE ON
SPESSOA.CODPESSOAPAI = PPESSOA_MAE.CODIGO
LEFT JOIN PCODNACAO AS NACIONALIDADE_MAE ON
PPESSOA_MAE.NACIONALIDADE = NACIONALIDADE_MAE.CODCLIENTE
WHERE SALUNO.CODPESSOA is not null
Espero que te ajude.