tiago.uepa 0 Denunciar post Postado Julho 3, 2018 Boa noite 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, 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. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 4, 2018 O problema é que um subselect como coluna só pode retornar um valor , a solução depende de alguns fatores, como : O sub sql está certo ? Tenho dados duplicados ? Posso ter dados duplicados ? Se posso quer fazer neste caso ? Compartilhar este post Link para o post Compartilhar em outros sites
tiago.uepa 0 Denunciar post Postado Julho 4, 2018 Boa tarde Motta, Então pelo que vi o problema está na saída do NVL, sem o NVL o relatório funciona. O sub sql está certo, não tenho dados duplicados, poderia ter dados duplicados pois na query acima estou utilizando operador IN, fiz os testes digitando os dados no lugar no NVL e funcionou. Você comentou do subselect como coluna só pode retornar um valor, vou verificar se consigo tratar o retorno transformando em linha com separador ',' Vou testar e posto o resultado. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
tiago.uepa 0 Denunciar post Postado Julho 4, 2018 Boa tarde, Fiz uma tentativa com o LISTAGG, e consegui eliminar o erro: ORA-01427: a subconsulta de uma única linha retorna mais de uma linha agora retorna em uma unica linha, mas a query acima não lê, talvez alguma formatação resolva? tentei usar to_char, to_number mas não foi.. 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 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 5, 2018 Citar mas a query acima não lê ¡¿!? Compartilhar este post Link para o post Compartilhar em outros sites
tiago.uepa 0 Denunciar post Postado Julho 5, 2018 Bom dia, Não lê. Eu mudei o rateio para apenas 1 e assim ele lê, então é como ele não reconhecer depois da virgula, ou reconhecer tudo como uma unica string. Compartilhar este post Link para o post Compartilhar em outros sites