Fórum Duvida grande que parece ser bem facil #510254

11/02/2015

0

tenho uma tabela de títulos a receber...

legenda do status das parcelas : P = paga, A = aberta

A tabela preenchida ficaria assim:

campos da tabela: num_titulo, num_parcela. cod_cliente, data_vencimento, data_quitacao, valor_da_venda, qtde_parcelas , stutus_parcela

1234 | 1 | 23 | 11/02/2015 | 11/02/2015 | 150,00 | 3 | P
1234 | 2 | 23 | 11/03/2015 | 11/02/2015 | 150,00 | 3 | P
1234 | 3 | 23 | 11/04/2015 | NULL | 150,00 | 3 | A


amigos estou precisando do seguinte

selecionar os contratos que foram quitados completos em um período banco de dados PostgreSQL 8.2

consigo selecionar mais vem com parcelas em abertas pelo meio, não é o que quero alguém pode me ajudar??? fico bem grato e obrigado a todos
Marlos Silva

Marlos Silva

Responder

Posts

11/02/2015

Fernando C

pesquise sobre as cláusulas where e between:
http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx
http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx
Responder

Gostei + 0

11/02/2015

Thiago Santana

pesquise sobre as cláusulas where e between:
http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx
http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx


O seu select será mais ou menos isso aqui:

SELECT num_titulo, num_parcela. cod_cliente, data_vencimento, data_quitacao, valor_da_venda, qtde_parcelas , stutus_parcela  FROM TABELA_TITULOS WHERE  ((stutus_parcela = 'P') AND (data_quitacao BETWEEN '01/01/2010' AND '30/01/2010'))


Pode está com erros pois não tenho sua base de dados para testar!
Espero ter colaborado!
Responder

Gostei + 0

11/02/2015

Marlos Silva

obrigador pela a ajuda mais não funcionou 100% pois traz algumas parcelas quitadas e as demais que ainda não foram pagas ficam para traz, informando que o contrato completo já foi pago...

seria mais ou menos assim..

ex: tenho um contrato = 123 e o mesmo tem 5 parcelas no total certo ? 3 delas estão pagas 01 | 02 | 03 e esta faltando duas correto ?

o código que você passou está fazendo o seguinte:

num_contra | num_parc | Situacao | data_pgto | total_de_parcelas | total_dos_titulos | valor_da_parcela |
123 | 01 | P | 02/01/2014 | 5 | 250,00 | 50.00 |
123 | 02 | P | 02/02/2014 | 5 | 250,00 | 50.00 |
123 | 03 | P | 02/03/2014 | 5 | 250,00 | 50.00 |

****************************************************************************************************************************************************

se o contrato não tem as 5 parcelas pagas, então o contrato não esta liquidado certo ?

parcelas restantes do contrato 123 = 04 | 05 que estão com o status 'A' de abertas

123 | 04 | A | __ /__ /___ | 5 | 250,00 | 50.00 |
123 | 05 | A | __ /__ /___ | 5 | 250,00 | 50.00 |

ou seja esse contrato não tem que aparecer, pq não tem todos os títulos pagos, mesmo que tenha alguma parcela entre o período que informei.

acho que se fosse filtrado assim daria cero: quando a data de pagamento da ultima parcela quitada for na mesma data do filtro, então sabemos que é a ultima parcela representa que o contrato esta pago por completo.
Responder

Gostei + 0

11/02/2015

Thiago Santana

Marlos, você deve ter uma outra tabela que faz o master detalhe com essa tabela que você mostrou o escopo nos comentários anteriores para fazer o MASTER/DETAIL né?
Daí você faria o seguinte:

SELECT num_titulo FROM TB_MASTER tm
WHERE NOT EXISTS (SELECT num_titulo FROM TB_DETAIL td where td.situacao = 'A' AND td.num_titulo = tm.num_titulo)


TB_MASTER = Tabela onde você tem os dados do seu contrato
TB_DETAIL = Tabela Financeira referente ao seu contrato

Vai ser algo desse tipo, dessa forma você só estará listando os contratos que estão totalmente quitados. Ou seja, não há parcelas em abertas!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar