Olá galera eu tenho duas tabelas, uma é o caixa e a outra estorno, estou usando o seguinte código para poder retornar o valor do meu caixa
Select caixa.cod_vendedor,caixa.des_transacao, nom_operador,
count(*) qtd_vendas, sum(caixa.val_transacao - val_desconto - estorno.val_transacao) as valor
from caixa
left join operador on caixa.cod_vendedor = operador.cod_operador
left join estorno on caixa.cod_vendedor = estorno.cod_vendedor
WHERE dat_movimento='15/01/2009' and ind_pagamento='S' and caixa.cod_loja=1
and (des_transacao ='Ordem de serviço' or des_transacao = 'venda balcao' )
group by caixa.cod_vendedor
order by valor desc
bom o problema é que se um valor não foi extornado quando vai fazer a somatória volta um valor null, eu queria saber se tem como eu fazer essa conta e o meu estorno.val_transacao assumir zero quando não fosse encontrado nada na tabela de estornos
valew!
olá LuanMelo, obrigado pela força, mas o comando não é aceito, quando eu coloco
isnull(estorno.val_transacao,0)
da um erro porém quando eu tiro o “,0” funciona a função só que n retorna oque eu queria
na verdade eu precisaria mais na parte que tem o
sum(caixa.val_transacao - val_desconto - estorno.val_transacao) as valor
para substituir esse estorno.val_estorno por 0 quando ele for nulo
não tem uma forma de usar um operador ternário em sql n?
lucamartins
Cara, o isnull deve solucionar o seu problema.
No create table qual é tipo de val_transacao na tabela Estorno?
Tente assim: 1. isnull(estorno.val_transacao,"0")
Se chiar por causa das aspas duplas tente usar as aspas simples.
At,
Luca
eduardoluiz.ribeiro
ixi não deu não, e eu tentei de todas as maneiras, inclusive o isnull(estorno.val_transacao,0) não funciona sob hipótese alguma mesmo com aspa simples, dupla ou sem.
eu tentei algo do tipo
porém também sem sucesso
L
LuanMelo
o tipo do campo é int, certo?
então não tem porque ultilizar aspas, e sim um numero inteiro mesmo
tenta acrescentando mais um parenteses…
eduardoluiz.ribeiro
eu procurei no google há um comando no oracle (NVL) que faz exatamente oque eu quero ele pega um valor nulo e substitui por um que o programador definir, n tem algo assim no MySQL?
eduardoluiz.ribeiro
opa galera, valew a ajuda mesmo, consegui resolver aqui, é só usar a função COALESCE que resove
L
LuanMelo
opa eduardoluiz.ribeiro, que bom que consegui achar a solução, tava dando uma pesquisada e vi que essa função isnull no MySql tem outra função e não é igual no SQL Server …
e tinha achado sobre o coalesce, so estava pesquisando direito para ver se era isso mesmo, e ja vi que é
rsrs
com seu problema acabei descobrindo outras coisas pesquinsando por ai
lucamartins
Boa!
Eu tô na mesma do LuanMelo, respondi baseado no SQLServer. Eu disse para vc tentar colocar com aspas, pq as vezes para projetos como esse de caixa os atributos são criados como varchar para armazenar o valor referente ao crédito “C” ou debito “D”. Essa implementação é errada, mas acontece =).
Mas valeu, agora se me perguntarem do isnull do MySql eu vou saber.