Para que la sentencia UNION o UNION ALL sean funcionales, se exige 2 condiciones:
1. Que tenga el mismo numero de campos las consultas que se requiere unir.
2. Que cada campo en el orden establecido, sea del mismo tipo de dato.
Prueba lo siguiente:
Código SQL:
Ver originalSELECT fecha,SUM(sum1)AS valor_total,SUM(valortotal_uso)AS valor,SUM(estado)AS valor_estado
FROM
((SELECT to_date(clearingdate,'yyyymmdd')AS fecha,NULL::BIGINT AS sum1,NULL::BIGINT AS valortotal_uso,SUM(amountused)AS estado FROM e_transacciones GROUP BY fecha)
UNION ALL
(SELECT to_date(fecha_de_transaccion,'YYYYMMDDHH24MISS')AS fecha,NULL::BIGINT AS sum1,SUM(monto_de_uso)AS valortotal_uso,NULL::BIGINT AS estado FROM uso_tarjetas GROUP BY fecha)
UNION ALL
(SELECT to_date(fecha_de_recaudo,'DD-MM-YYYY')AS fecha ,SUM(valor)AS sum1, NULL::BIGINT AS valortotal_uso,NULL::BIGINT AS estado FROM troncal_post GROUP BY fecha)
UNION ALL
(SELECT to_date(fecha_de_reclamo,'DD-MM-YYYY') AS fecha,SUM(valor)AS sum1,NULL::BIGINT AS valortotal_uso,NULL::BIGINT AS estado FROM zonal GROUP BY fecha))AS set1 GROUP BY fecha;
Lo que hice, fue hacerle un casteo explicito a los null para que sean tratados como bigint y no como text.
Nos cuentas como te va