Seu case retonar um text e ele é comparado com o 0 que é integer. Coverta o
0 para text.

postgres=# select coalesce('0'::text, 0);
ERROR:  COALESCE types text and integer cannot be matched
LINE 1: select coalesce('0'::text, 0);
                                   ^
postgres=# select coalesce('0'::text, 0::text);
 coalesce
----------
 0
(1 row)


[]s


Em 3 de dezembro de 2014 22:31, Douglas Fabiano Specht <
[email protected]> escreveu:

>
>
> Em 3 de dezembro de 2014 21:05, Paulo Afonso Pereira <
> [email protected]> escreveu:
>
>>  OLÁ PESSOAL,
>>
>>
>>
>> PRECISO COLOCAR SINAIS NOS MEUS SALDOS E PRECISO DE UMA DICA.
>>
>> EXECUTANDO A SENTENÇA ABAIXO:
>>
>>     SELECT pl.classificacao
>>
>>                  , pl.descricao
>>
>>                  , coalesce(
>>
>>                  (
>>
>>                    SELECT sum (lcx.valor)
>>
>>                     FROM consolidado lcx
>>
>>                      WHERE lcx.datalan < '2014-01-01'
>>
>>          ),0)  AS saldo_anterior;
>>
>>
>>
>> RETORNO:
>>
>> ----------------
>>
>> -48071.06
>>
>> -25620.64
>>
>> -10000.00
>>
>> -31.15
>>
>> -1200.00
>>
>> -25000.00
>>
>> 1200.00
>>
>> 25000.00
>>
>> -20000.00
>>
>> -20080.00
>>
>> 20000.00
>>
>>
>>
>> PRECISO COLOCAR SINAIS DE 'D' PARA NEGATIVOS E 'C' PARA POSITIVOS.
>>
>> ESTOU TENTANDO ALGO ASSIM:
>>
>> -------------------------
>>
>> 48071.06D
>>
>> 25620.64D
>>
>> 10000.00D
>>
>> 31.15D
>>
>> 1200.00D
>>
>> 25000.00D
>>
>> 1200.00C
>>
>> 25000.00C
>>
>> 20000.00D
>>
>> 20080.00D
>>
>> 20000.00C
>>
>>
>>
>> ESTOU TENTADO ALGO DO TIPO:
>>
>> ---------------------------------------
>>
>>     SELECT pl. classificacao
>>
>>                  , pl.descricao
>>
>>                  , coalesce(
>>
>>                  (
>>
>>                    SELECT
>>
>>                     CASE WHEN sum (lcx.valor) < 0 THEN ABS(sum
>> (lcx.valor))||'D'
>>
>>                                WHEN sum (lcx.valor) > 0 THEN ABS(sum
>> (lcx.valor))||'C'
>>
>>                               ELSE '*'
>>
>>                    END
>>
>>                     FROM consolidado lcx
>>
>>                      WHERE lcx.datalan < '2014-01-01'
>>
>>          ),0)  AS saldo_inicial
>>
>>
>>
>> RETORNA O ERRO:
>>
>> -------------------------------
>>
>> ERRO:  tipos no COALESCE text e integer não podem corresponder
>>
>> LINE 22:        ),0)  AS saldo_inicial
>>
>>
>>
>> COLOCAR SUM() NO CASE, SERIA A MELLHOR OPÇÃO ?
>>
>>
>>
>> ALGUEM PODE DAR UMA DICA ?
>>
>>
>>
>> OBRIGADO.
>>
>>
>>
>> PAULO.
>>
>>
>>
>>
>> ------------------------------
>>    <http://www.avast.com/>
>>
>> Este email foi escaneado pelo Avast antivírus.
>> www.avast.com
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> ola..
> se vc converter do o resultado para varchar?
> --
>
> Douglas Fabiano Specht
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a