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