Problema com cálculo

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Dualogic
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 16 Ago 2016 11:36 am

Seres detentores do conhecimento neste fórum

Estou com uma problema em uma consulta SQL de um cliente, que executa um cálculo, porém mesmo que eu altere o valor dos campos o retorno é sempre o mesmo, preciso humildemente de vossos conhecimentos.

Segue código.

Neste sempre retorna 1,04

Selecionar tudo

SELECT ROUND (DECODE (a.ie_sexo,'M',((TO_NUMBER('1.112','999.99999999')-(TO_NUMBER('0.00043499','999.99999999')*(TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999'))) + (TO_NUMBER('0.00000055','999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999')))) - (TO_NUMBER('0.00028826','999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,2684)),'999.99999999'))))),'F',((TO_NUMBER('1.097','999.99999999')-(TO_NUMBER('0.00046971','999.99999999')*(TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999'))) + (TO_NUMBER('0.00000056','999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,3032)),'999.99999999')))) - (TO_NUMBER('0.00012828','999.99999999') * (TO_NUMBER(TRIM(Aval(b.nr_sequencia,2684)),'999.99999999'))))),0),2) cp 
FROM atendimento_paciente_v a, med_avaliacao_paciente b 
WHERE b.nr_atendimento = :nr_atendimento 
AND b.nr_atendimento = a.nr_atendimento 
AND b.NR_SEQ_TIPO_AVALIACAO = 227
ORDER BY b.nr_sequencia DESC

Aqui sempre retorna 26

Selecionar tudo

SELECT ROUND(DECODE(a.ie_sexo,'M',((TO_NUMBER('4.95','999.99999999')/TO_NUMBER(TRIM(Aval(b.nr_sequencia,3036)),'999.99999999') - TO_NUMBER('4.5','999.99999999')) * 100),'F',((TO_NUMBER('4.95','999.99999999')/TO_NUMBER(TRIM(Aval(b.nr_sequencia,3036)),'999.99999999') - TO_NUMBER('4.5','999.99999999')) * 100),0),1) cp 
FROM atendimento_paciente_v a, med_avaliacao_paciente b 
WHERE b.nr_atendimento = :nr_atendimento 
AND b.nr_atendimento = a.nr_atendimento 
AND b.NR_SEQ_TIPO_AVALIACAO = 227
ORDER BY b.nr_sequencia DESC
Banco Oracle 11.2.0.4
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia,

o que retorna quando você executa a função Aval isoladamente?
Dualogic
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 16 Ago 2016 11:36 am

A função Aval, retorna o valor do campo de uma tela de avaliação que tenho no meu sistema.

o valor é alimentado pelo usuário baseado nos dados coletados.
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

é só um palpite no escuro, mas dá a impressão que está função pode estar com algum problema e retorna sempre o mesmo valor pra sempre dar o mesmo resultado no select, independente da b.nr_sequencia.
Dualogic
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Ter, 16 Ago 2016 11:36 am

O problema é que este problema ocorre apenas com esta avaliação em específico, existem outras avaliações que os cálculos são feitos normalmente.
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

tem como você disponibilizar a estrutura da função e alguns b.nr_sequencia da query?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

O Problema é na função "Aval" como mencionado. Seria necessário analisá-la. Se fosse possível postá-la para verificarmos.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante