Show de bola, muito bom mesmo, exatamente o que eu precisava.

Obrigado Mateus e Emerson pelas preciosas dicas.

 

Att,

 

Paulo.

 

 

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".

 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a