On Fri, Apr 23, 2021 at 10:32:31AM -0300, Diego wrote:
>
> ERROR: column excluded.fec does not exist LINE 25: ...ON CONFLICT (address)
> DO UPDATE SET saldo.fecha = EXCLUDED.f... ^ SQL state: 42703 Character: 1052
>
[...]
> Alguien me podra orientar?
>
>
> INSERT INTO wallet.saldo(address, fecha, saldo)
>
> select '0xaa515035c04aab' as token_address, max(block_timestamp)::date
> , sum(importe)
> from (
>
> SELECT
> tt.block_timestamp, tt.value::numeric(60,20) / ('1' ||
> left('0000000000000000000000000', t.decimals))::numeric * -1 as importe
> FROM raw.token_transfers tt inner join raw.tokens t on t.address =
> tt.token_address
> where to_address = '0xaa515035c04aab'
> and tt.block_timestamp between '20201009 00:00:00' and '20201009
> 23:59:59.99999'
>
> union
>
> SELECT
> tt.block_timestamp, (tt.value::numeric(60,20) / ('1' ||
> left('0000000000000000000000000', t.decimals))::numeric) as importe
> FROM raw.token_transfers tt inner join raw.tokens t on t.address =
> tt.token_address
> where from_address = '0xaa515035c04aab'
> and tt.block_timestamp between '20201009 00:00:00' and '20201009
> 23:59:59.99999'
>
> ) as det
>
> ON CONFLICT (address) DO UPDATE SET saldo.fecha = EXCLUDED.fec,
> saldo.saldo = EXCLUDED.imp
>
> ;
>
No veo donde están definidos los campos "fec" e "imp". hasta donde
entiendo no existen y por eso postgres te dice que no existen.
La calusula ON CONFLICT debería quedar así:
ON CONFLICT (address) DO UPDATE SET saldo.fecha = EXCLUDED.fecha,
saldo.saldo = EXCLUDED.saldo
--
Jaime Casanova
Director de Servicios Profesionales
SystemGuards - Consultores de PostgreSQL