Evandro Ricardo Silvestre escreveu:
> Tente isso:
> SELECT 
> round(SUM(cast(cast(replace(replace(*COALESCE(*Valor*,0)*,'.',''),',','') 
> as text) as float)*1000))/100000 AS contestado,
> round(SUM(cast(cast(replace(replace(*COALESCE(*Valor1*,0)*,'.',''),',','') 
> as text) as float)*1000))/100000 AS contestante
> FROM traf.con WHERE PERIODO = 200612 AND TP = 1,
> 
> Se o campo for NULL o Coalesce retorna 0, caso contrário retorno seu 
> próprio valor. É como um CASE só que mais rápido e especifico para NULL.
> Att
> 
> Evandro
> 
> daniel mendes wrote:
>>
>> Opa Osvaldo,
>>  
>> olha soh eu tentei fazer assim:
>>  
>>  SELECT round(SUM(cast(cast(replace(replace(Valor,'.',''),',','') as
>> > text) as float)*1000))/100000 AS contestado,
>> > round(SUM(cast(cast(replace(replace(Valor1,'.',''),',','') as text) as
>> > float)*1000))/100000 AS contestante,
>> case
>>  when ValorContestante=''  then 0
>> end
>> soh que nao estah dando certo.Voce poderia dar um help?
>>
>> */Osvaldo Rosario Kussama <[EMAIL PROTECTED]>/* escreveu:
>>
>>     daniel mendes escreveu:
>>     > Boa tarde,
>>     >
>>     > eu tenho uma consulta:
>>     >
>>     > SELECT round(SUM(cast(cast(replace(replace(Valor,'.',''),',','') as
>>     > text) as float)*1000))/100000 AS contestado,
>>     > round(SUM(cast(cast(replace(replace(Valor1,'.',''),',','') as
>>     text) as
>>     > float)*1000))/100000 AS contestante
>>     > FROM traf.con WHERE PERIODO = 200612 AND TP = 1,
>>     > so que tah dando o seguinte erro: ERROR: invalid input syntax
>>     for type
>>     > double precision: "", eu reparei que o erro ocorre no segundo
>>     campo da
>>     > consulta.
>>     >
>>
>>
>>     Repare:
>>     bdteste=# SELECT cast('' as float);
>>     ERRO: sintaxe de entrada inválida para tipo double precision: ""
>>
>>     portanto é provável que para algum valor o resultado dos replaces
>>     seja
>>     um string vazio. Talvez você deva considerar zero nestes casos.
>>     Veja case:
>>     
>> http://www.postgresql.org/docs/8.2/interactive/functions-conditional.html#AEN13053
>>


Caso a ausência de conteudo nas variáveis valor e valor1 sejam indicadas 
por null então utilize a solução do Evandro.

Caso seja por um string de comprimento zero (string vazio) então utilize 
o case no lugar do coalesce:
replace((CASE WHEN Valor1 <> '' THEN Valor1
               ELSE 0 END),'.','')

ou então coalesce(nullif(valor1,''),0).

[]s
Osvaldo

        

        
                
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
_______________________________________________
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