42804: datatype_mismatch
PostgreSQLO que significa?
O tipo de dado esperado e o tipo de dado fornecido não correspondem. Por exemplo, atribuir um valor do tipo errado a uma coluna, ramos de CASE retornando tipos diferentes, ou ramos de UNION cujos tipos não se alinham.
Por que acontece?
Uma atribuição incompatível com o tipo da coluna; ramos de CASE/COALESCE produzindo tipos diferentes; colunas correspondentes em um UNION com tipos diferentes; um valor retornado (RETURN) que não corresponde ao tipo de retorno da função; um valor não booleano onde se espera um booleano.
Como resolver
Faça cast da expressão para o tipo correto: value::integer ou CAST(value AS numeric). Faça todos os ramos do CASE retornarem o mesmo tipo. Em um UNION, alinhe os tipos das colunas correspondentes dos dois lados. Certifique-se de que a condição WHERE resulta em um booleano.