Ler retorno de varias linhas da subquery com NVL

SQL

Oracle

05/07/2018

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

Curtidas 0
POSTAR