2014-09-04 23:21 GMT-03:00 Paulo Pereira <[email protected]>:
> Tenho duas tabelas: Tabela Saldos das Contas e Tabela Saidas. EX:
> TABELA SALDOS:
> CONTA|SALDO
> 200 | 200.00
> 201 | 500.00
>
> Tenho o seguinte sentença que me retorna a soma das contas, como segue:
> SELECT row_number() OVER(PART BY conta ORDER BY conta,valor),
> setor,
> valor,
> conta,
> SUM(valor) OVER(PART BY conta ORDER BY conta,valor) as Total
> FROM saidas
> ORDER BY conta.
>
> RETORNO:
> 1-1-200-50.00-50.00
> 2-1-200-60.00-110.00
> 3-1-200-50.00-160.00
> 1-1-201-80.00-80.00
> 2-1-201-40.00-120.00
> 3-1-201-30.00-150.00
>
> Preciso buscar o saldo de cada conta da tabela saldos para ficar assim:
> SALDO 200.00
> 1-1-200-50.00-250.00
> 2-1-200-60.00-310.00
> 3-1-200-50.00-360.00
> SALDO 500.00
> 1-1-201-80.00-580.00
> 2-1-201-40.00-620.00
> 3-1-201-30.00-650.00
>
> Alguem pode dar uma dica ?
>
Eu faria usando UNION ALL, da seguinte forma:
SELECT 1 AS tipo,
NULL::bigint,
NULL::integer AS setor,
NULL::numeric AS valor,
conta,
saldo AS Total
FROM saldo
UNION ALL
SELECT 2 AS tipo,
row_number() OVER(PARTITION BY conta ORDER BY valor),
setor,
valor,
conta,
SUM(valor) OVER(PARTITION BY conta ORDER BY valor) as Total
FROM saidas
ORDER BY conta, tipo, valor
Assim, na aplicação você só itera os registros (que já virão ordenados),
quando tipo for 1 é "saldo", quando tipo for 2 é "conta".
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral