Duvida SQL Firebird
27/08/2007
0
Galera ve se vcs podem me ajudar, estou com o seguinte sql:
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+1 as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
bom minha duvida é a seguinte, neste pedaço ´cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+[color=red:039183fb74]1 [/color:039183fb74]as integer)´ eu preciso somar aquele 1 somente se o resultado for diferente de 0, ou seja se aquela divisão der um numero igual a 0, o +1 não deveria estar ali, o que eu gostaria de saber é, tem alguma forma de eu tratar isso neste sql? ou vou ter que montar uma procedure para fazer este tratamento?
Resumindo se (p.pro_qtde_est*-1)/p.pro_qtde_cx =0 then
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx ) as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
se for diferente de 0 then
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+[color=red:039183fb74]1[/color:039183fb74] as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+1 as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
bom minha duvida é a seguinte, neste pedaço ´cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+[color=red:039183fb74]1 [/color:039183fb74]as integer)´ eu preciso somar aquele 1 somente se o resultado for diferente de 0, ou seja se aquela divisão der um numero igual a 0, o +1 não deveria estar ali, o que eu gostaria de saber é, tem alguma forma de eu tratar isso neste sql? ou vou ter que montar uma procedure para fazer este tratamento?
Resumindo se (p.pro_qtde_est*-1)/p.pro_qtde_cx =0 then
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx ) as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
se for diferente de 0 then
select p.pro_nome,cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx )+[color=red:039183fb74]1[/color:039183fb74] as integer),l.list_data
from itens_lista il, produtos p , lista l
where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
Shakall
Curtir tópico
+ 0
Responder
Posts
27/08/2007
Emerson Nascimento
select p.pro_nome, (case when (p.pro_qtde_est*-1) / p.pro_qtde_cx = 0 then 0 else cast(((p.pro_qtde_est*-1)/p.pro_qtde_cx) + 1 as integer) end), l.list_data from itens_lista il, produtos p , lista l where il.list_cod=1 and p.pro_cod=il.pro_cod and l.list_cod=il.list_cod and (p.pro_qtde_est<0)
dica: coloque suas dúvidas no fórum sobre Firebird/Interbase. creio que lá suas questões terão maior visibilidade.
Responder
Clique aqui para fazer login e interagir na Comunidade :)