Ler retorno de varias linhas da subquery com NVL

05/07/2018

0

Bom dia galera,

Desculpe minha pergunta, mas já quebrei bastante a cabeça e não encontro a solução.
Tenho um relatório onde preciso ler o centro de resultado do rateio caso exista, se não existir rateio, ler o centro de resultado do lançamento. Então utilizei o NVL:

NVL( (SELECT R1.CODCENCUS
FROM TGFRAT R1
JOIN TGFFIN F1 ON (R1.NUFIN=(CASE WHEN F1.ORIGEM = ''E'' THEN F1.NUNOTA ELSE F1.NUFIN END))
WHERE F1.NUFIN = F.NUFIN
GROUP BY R1.CODCENCUS)

, F.CODCENCUS)


Executando apenas o select o resultado é exibido corretamente:

2020209
2010301

Mas quando uso o retorno do NVL para a query acima vem o erro: ORA-01427: a subconsulta de uma única linha retorna mais de uma linha

Se eu digito os resultados manualmente a consulta funciona.

Já tentei utilizar o LISTAGG, fazendo retornar apenas uma linha :
NVL( (SELECT LISTAGG(R1.CODCENCUS, '','')
WITHIN GROUP (ORDER BY R1.CODCENCUS)
FROM TGFRAT R1
JOIN TGFFIN F1 ON (R1.NUFIN =(CASE WHEN F1.ORIGEM = ''E'' THEN F1.NUNOTA ELSE F1.NUFIN END))
WHERE F1.NUFIN = F.NUFIN
)
, F.CODCENCUS)

resultado em unica linha:

2010301,2020209

mas a query acima não lê o resultado.
Tiago Souza

Tiago Souza

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar