Pesquisar na Comunidade
Showing results for tags 'double precision'.
Encontrado 1 registro
-
Case não considera campo double precision
um tópico no fórum postou alessandro pancotte Banco de Dados
Pessoal, Tenho este sql abaixo, onde o campo VLTOTALBRUTO esta dando erro de arithimetic por estar zerado em alguns casos. Tentei usar um case para tratar quando for zero nao executar a sentensa do cast, porem ele nao passa pelo case. Ele deveria jogar para a variavel vltotal = 0 qdo o vltotalbruto for 0, caso contrario executar executar o cast, mas mesmo usando o case ele da erro de arithimetic SELECT p.cnpj_cpf, SUBSTRING(p.insc_rg FROM 1 FOR 14), p.tpinsc, m.dataemissao, nf.uf, cast(lpad (m.numdocumento, 6, '0') as varchar(06)), mi.percicms as aliquota, Case When m.vltotalbruto = 0 then 0 else CAST((sum((mi.qtde * mi.vlunitario) + coalesce(mi.vlipi, 0) + ((mi.qtde * mi.vlunitario)*(((coalesce(nf.vloutrasdespesas,0) * 100) / m.vltotalbruto) / 100)) + ((mi.qtde * mi.vlunitario)*(((coalesce(nf.vlseguro,0) * 100) / m.vltotalbruto) / 100)) + ((mi.qtde * mi.vlunitario)*(((coalesce(m.vlfrete,0) * 100) / m.vltotalbruto) / 100)) + coalesce(mi.valoricmsst, 0) - coalesce(mi.vldesconto, 0))) AS NUMERIC(11,2)) end as vltotal, CAST((sum((coalesce(mi.baseicms, 0)))) AS NUMERIC(11,2)) as baseicms, CAST((sum(mi.vlicms)) AS NUMERIC(11,2)) as vlicms, m.situacao, SUBSTRING(nf.modelo from 1 for 2), mi.cfop FROM mov_movimento m JOIN mov_nf nf on (m.cod= nf.cod) JOIN pes_pessoas p on (m.codclifor = p.cod) join g_tpmovimento tp on (m.codtpmovimento = tp.cod) join mov_movitens mi on (m.cod = mi.codmovimento) WHERE m.dataemissao >= :INICIO AND m.dataemissao <= :fim and m.codempresa = :codempresa GROUP BY p.cnpj_cpf, p.insc_rg, p.tpinsc, m.dataemissao, nf.uf, m.numdocumento, mi.percicms, m.situacao, nf.modelo,mi.cfop, m.vltotalbruto