:) vou tentar explicar melhor:veja...eu tenho um parâmetro que eu informo ao 
executar a função(no caso é o vt_d_lote)se eu informar o lote então a soma e 
feita com o lote que eu informar,caso eu informe "null" no parâmetro então a 
soma é feita com os lotes nullos.From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: 
Wed, 21 Feb 2007 15:31:55 -0300Subject: Re: [PostgreSQL-Brasil] dúvida com 
"null"








 Bem nesse caso, 
você pretende filtrar os lotes quando a variável não for 
nula
OU filtrar tudo se a 
variável for nula. ok?
 
 
     select coalesce(sum(ie.qt_entrada*up.vr_fator), 
0)     from tb_itentrada_prod 
ie     inner join tb_unid_produto up on 
(up.c_unid_produto = 
ie.c_unid_produto)                                  
and (up.d_unidade in ('E','A'))     inner join 
tb_entrada_prod e on (ie.c_entrada_prod = 
e.c_entrada_prod)                                 
and (e.c_estoque = 
in_c_estoque)                                 
and (to_timestamp(e.dt_emissao||' '||e.hr_entrada, 'YYYY-MM-DD HH24:MI:SS') 
>                                      
coalesce(v_hr_inventario,'1900-02-20 11:18:14-03'))   where 
(ie.c_produto = in_c_produto)     and ( (vt_d_lote is 
not null and ie.d_lote = 
vt_d_lote)        or (vt_d_lote is 
null)      )
 
--

  ----- Original Message ----- 
  From: saulo Mendes 
  
  To: Grupo de Usuários do PostgreSQL no 
  Brasil 
  Sent: Wednesday, February 21, 2007 2:08 PM
  Subject: Re: [PostgreSQL-Brasil] dúvida com 
  "null"
  
  Esse é o meu 
  grande problema: esse select não deve somar os lotes nulos e não-nulos. Na 
  verdade essa é uma função onde eu informo o produto(in_c_produto) o estoque 
  (in_c_estoque) e o lote(vt_d_lote).Esse comando deve realizar essa 
  operação conforme o lote informado(se é nulo ou não). O que eu queria 
  fazer era, justamente, evitar reescrever o sql apenas por causa do 
  lote.entendeu?
  
    
    From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Wed, 
    21 Feb 2007 14:47:17 -0300Subject: Re: [PostgreSQL-Brasil] dúvida com 
    "null"
    
    

        Olá Saulo... Acho que pode ser 
    isso aqui então:
     
    select sum(tabela.valortotal) as TOTAL_GELALfrom 
    (select coalesce(sum(ie.qt_entrada*up.vr_fator),0) as 
    valortotal      from tb_itentrada_prod 
    ie      inner join tb_unid_produto up on 
    (up.c_unid_produto = 
    ie.c_unid_produto)             
    and (up.d_unidade in ('E','A'))      inner join 
    tb_entrada_prod e on (ie.c_entrada_prod = 
    e.c_entrada_prod)             
    and (e.c_estoque = 
    in_c_estoque)             
    and (to_timestamp(e.dt_emissao||' '||e.hr_entrada, 'YYYY-MM-DD HH24:MI:SS') 
    > coalesce(v_hr_inventario,'1900-02-20 
    11:18:14-03'))      where (ie.c_produto = 
    in_c_produto) and ie.d_lote is null
     
          union 
all
     
          select 
    coalesce(sum(ie.qt_entrada*up.vr_fator),0) as 
    valortotal      from tb_itentrada_prod 
    ie      inner join tb_unid_produto up on 
    (up.c_unid_produto = 
    ie.c_unid_produto)             
    and (up.d_unidade in ('E','A'))      inner join 
    tb_entrada_prod e on (ie.c_entrada_prod = 
    e.c_entrada_prod)             
    and (e.c_estoque = 
    in_c_estoque)             
    and (to_timestamp(e.dt_emissao||' '||e.hr_entrada, 'YYYY-MM-DD HH24:MI:SS') 
    > coalesce(v_hr_inventario,'1900-02-20 
    11:18:14-03'))      where (ie.c_produto = 
    in_c_produto) and ie.d_lote = vt_d_lote) tabela
     
    ** Descrevendo esse sql, Faço um select de todos os 
    lotes nulos +  select de todos os lotes 
    = à vt_d_lote;
        Usando a Teoria de 
    Sub-Selects.
     
        Assim, conforme você descreveu 
    pode ter a chave vazia ou não e ele somará as duas.
     
        Sidnei
    
    
      ----- 
      Original Message ----- 
      From: 
      saulo 
      Mendes 
      To: 
      Grupo de Usuários do 
      PostgreSQL no Brasil 
      Sent: 
      Wednesday, February 21, 2007 1:31 PM
      Subject: 
      Re: [PostgreSQL-Brasil] dúvida com "null"
      
       olá Sidnei, ainda não é 
      issoveja... o campo d_lote pode ser vazio ou não...mas ambos 
      trazem resultados diferentesno caso o resultado dessa consulta (select 
      coalesce(sum(ie.qt_entrada*up.vr_fator),0)....)varia se o campo for 
      nulo ou não, se eu utilizar  
      (vt_d_lote is null or ie.d_lote = 
      vt_d_lote)aí o resultado 
      vai ficar incorreto. 
      
        
        From: [EMAIL PROTECTED]: 
        [EMAIL PROTECTED]: Wed, 21 Feb 2007 14:17:27 
        -0300Subject: Re: [PostgreSQL-Brasil] dúvida com "null"
        

            Além 
disso.......
            Acho que não compreendi a sua 
        pergunta no primeiro momento, mas o que você pretende fazer pode ser 
        assim:
         
        where (ie.c_produto = in_c_produto) 
        and (vt_d_lote is null or ie.d_lote 
        = vt_d_lote)
         
            
        Abraços
            
        Sidnei
        
          ----- 
          Original Message ----- 
          From: 
          saulo 
          Mendes 
          To: 
          [email protected] 
          
          Sent: 
          Wednesday, February 21, 2007 1:07 PM
          Subject: 
          [PostgreSQL-Brasil] dúvida com "null"
          
          Senhores,em uma determinada 
          função se eu comparar um valor de uma variável, e esta contiver um 
          valor nuloa consulta não me traz o resultado. Gostaria de saber 
          como equacionar isso de forma não-redundante.segue o trecho da 
          consulta:   select 
          coalesce(sum(ie.qt_entrada*up.vr_fator),0)    from 
          tb_itentrada_prod ie inner join tb_unid_produto 
          up     on (up.c_unid_produto = 
          ie.c_unid_produto) and (up.d_unidade in 
          ('E','A'))    inner join tb_entrada_prod e on 
          (ie.c_entrada_prod = e.c_entrada_prod)     and 
          (e.c_estoque = in_c_estoque) and    
          (to_timestamp(e.dt_emissao||' 
          '||e.hr_entrada,     'YYYY-MM-DD HH24:MI:SS') 
          >      
          coalesce(v_hr_inventario,'1900-02-20 
          11:18:14-03'))    where (ie.c_produto = 
          in_c_produto) and (ie.d_lote = 
          vt_d_lote) <<<< vt_d_lote é uma variável....se o valor 
          dela for nulo(esse campo pode ser nulo) a consulta não me traz o 
valor 
          correto pois o postgres não entendeu tipo, ie.d_lote = 
          null.    into 
          vr_estoque_positivo;a solução parcial que encontrei é, antes 
          de consulta (select coalesce...) eu testar se a variável é nula, caso 
          seja eu reescrevo a função com o final ie.d_lote is null. Eu gostaria 
de 
          eliminar esse redundância.agradeço, desde já.
          
          O Windows Live Spaces está aqui! Descubra como é fácil criar seu 
          espaço na Web e sua rede amigos. Confira! 
          
          
          _______________________________________________Grupo de 
          Usuários do PostgreSQL no BrasilAntes de perguntar consulte o 
          manualhttp://pgdocptbr.sourceforge.net/Para editar suas 
          opções ou sair da lista acesse a página da lista 
          em:http://pgfoundry.org/mailman/listinfo/brasil-usuarios
      
      Ligue para os seus amigos grátis. Faça chamadas de PC-para-PC pelo 
      messenger-- GRÁTIS Experimente agora! 
      
      _______________________________________________Grupo de Usuários 
      do PostgreSQL no BrasilAntes de perguntar consulte o 
      manualhttp://pgdocptbr.sourceforge.net/Para editar suas opções 
      ou sair da lista acesse a página da lista 
      em:http://pgfoundry.org/mailman/listinfo/brasil-usuarios
  
  Descubra e experimente alguns novos serviços online no Windows Live Ideas 
Experimente! 
  
  

  _______________________________________________Grupo de Usuários do 
  PostgreSQL no BrasilAntes de perguntar consulte o 
  manualhttp://pgdocptbr.sourceforge.net/Para editar suas opções ou 
  sair da lista acesse a página da lista 
  em:http://pgfoundry.org/mailman/listinfo/brasil-usuarios

_________________________________________________________________
Obtenha o novo Windows Live Messenger!
http://get.live.com/messenger/overview
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a