[RESOLVIDO] Firebirb, consulta do SC traz outro valor

Olá pessoal estou executando a seguinte query SQL no SQL Builder do SC e esta retornando um valor diferente do banco de dados, isso acontece apenas com a coluna valor que soma alguns registros.
Query SQL:

select ah_cnes CNES, tb_ha.HA_RAZAO,
ah_mun_hosp HOSP_MUN,
m_h.mun_nome MUN_HOSP, 
ah_num_aih AIH,
ah_cmpt CMPT, 
ah_paciente_nome PACIENTE,
ah_paciente_dt_nascimento DAT_NASC,
ah_paciente_numero_cns CNS,
ah_paciente_TIPO_logr LOGR_tipo,
tb_c_d.c_d_descricao LOGR_tp,
ah_paciente_logr LOGR,
ah_paciente_logr_numero NUM,
ah_paciente_logr_bairro BAIRRO,
ah_paciente_logr_cep CEP,
ah_paciente_logr_compl COMPL,
ah_paciente_logr_municipio MUN,
m_p.mun_nome MUN_PAC, 
ah_paciente_logr_uf UF,
ah_dt_internacao DT_INT,
ah_dt_saida DT_ALTA,
ah_proc_realizado  PROC_PRINCIPAL,
proc.NO_PROCEDIMENTO PROCEDIMENTO,
sum(pa_valor) VALOR
FROM TB_HAIH INNER JOIN TB_MUN m_h on tb_haih.ah_mun_hosp = tb_mun.mun_cod
INNER JOIN TB_MUN m_p on tb_haih.ah_paciente_logr_municipio = tb_mun.mun_cod
INNER JOIN TU_PROCEDIMENTO proc on tb_haih.ah_proc_realizado = TU_PROCEDIMENTO.co_procedimento 
INNER JOIN tb_c_d on tb_haih.ah_paciente_TIPO_logr = tb_c_d.c_d_cod_item
inner join tb_ha on tb_haih.ah_cnes = tb_ha.ha_cnes
left outer join TB_HPA on
                       (pa_seq_princ=ah_seq) and (pa_oe_gestor = ah_oe_gestor) and
                       (pa_cmpt=ah_cmpt)
WHERE ah_situacao = '0' and AH_CNES = '0013633' and TU_PROCEDIMENTO.dt_fim_vigencia = '999999'
AND AH_CMPT in ('201901','201902','201903','201904','201905','201906') AND tb_haih.ah_proc_realizado = '0407010173'
AND tb_c_d.c_d_cod_tab='0021' and tb_c_d.c_d_cmpt_fim = '201905'
AND tb_ha.ha_cmpt_fim='201905'
GROUP BY ah_cnes, tb_ha.HA_RAZAO,
ah_mun_hosp,
m_h.mun_nome, 
ah_num_aih, 
ah_cmpt,
ah_paciente_nome,
ah_paciente_dt_nascimento,
ah_paciente_numero_cns,
ah_paciente_TIPO_logr,
tb_c_d.c_d_descricao,
ah_paciente_logr,
ah_paciente_logr_numero,
ah_paciente_logr_bairro,
ah_paciente_logr_cep,
ah_paciente_logr_compl,
ah_paciente_logr_municipio,
m_p.mun_nome, 
ah_paciente_logr_uf ,
ah_dt_internacao ,
ah_dt_saida ,
ah_proc_realizado ,
proc.NO_PROCEDIMENTO 

Quando executo no banco de dados traz o valor corretamente:

Quando executo no SC traz o valor errado, caso eu execute mais de uma vez o valor fica mudando, tentei fazer em uma blank e o resultado foi o mesmo

Alguém tem alguma idéia? se devo transformar o valor ou coisa do tipo? não sei o porque o SC traz diferente a mesma consulta do banco

Ola

Isso ja me aconteceu algumas vezes e aconselho a criar uma view no banco de dados,.
Uso o SqlServer e quando preciso fazer uma consulta dessa maneira crio no banco de dados uma view e com isso resolve o problema.

At
Moacir

Ola:
O caminho mais simples é a View mesmo conforme a dica do Moacir.

Outro caminho é ligar o DEBUG para ver a query que o Scriptcase está mandando para o BD e comparar com a sua e tentar ver o que SC não “entendeu” !

qual o tipo de dado que é o campo (valor) ? lembre-se que o dialeto impacta nos cálculos, vi que num lugar está configurado o dialeto 1, de acordo com a imagem,o recomendado no FB é usar dialeto 3 e campo decimal para valores monetários:

No dialeto 1 os tipos DECIMAL e NUMERIC com precisão entre 10 e 15 são implementados de fato como DOUBLE PRECISION. Já no dialeto 3 os tipos DECIMAL e NUMERIC, com precisão maior que 9, são agora armazenados com 64 bits (INT64).

Outra situação, cuidado com campo do tipo FLOAT para armazenar valores monetários.

Oi Pessoal desculpa a demora para dar retorno, consegui resolver o problema era o tipo do campo mesmo, muito obrigado pela ajuda, segue a solução

No comando SQL o campo valor adicionei o CAST para transformar o retorno do campo
CAST(sum(pa_valor) as NUMERIC(8,2))

só para esclarecer, que tipo é o pa_valor no banco de dados?