CONSULTA DE CONTRATOS QUITADO NO PERÍODO

14/02/2015

0

quero fazer uma busca com a tabela de parcelas para mostrar quais os contratos foram terminado de ser quitados por completos em um período.
Lembrando que quero o resultado da ultima parcela se a situação da mesma = 'L' de Liquidada e a data de pgto seja a mesma data
do filtro que escolhi.

dados da tabela caso queiram criar a mesma:

CREATE TABLE TB_PARCELA (
PAR_CODIGO INTEGER NOT NULL,
VEN_CODIGO INTEGER,
CLI_CODIGO INTEGER,
CLI_NOME VARCHAR(30),
PAR_QTDEPARC INTEGER,
PAR_VALORPARC NUMERIC(15,2),
PAR_NUMPARCELA INTEGER,
PAR_VALORNOTA NUMERIC(15,2),
PAR_HAVER NUMERIC(15,2),
PAR_SITUACAO CHAR(1) DEFAULT 'A',
PAR_DTPGTO DATE,
PAR_DTVENC DATE
);


Alimentação da tabela caso queiram alimentar a mesma:

INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (1, 1, 10, 'JOAO FULANO', 5, 50, 1, 250, 0, 'L', '2014-06-01', '2014-09-01');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (2, 1, 10, 'JOAO FULANO', 5, 50, 2, 250, 0, 'L', '2014-07-01', '2014-10-01');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (3, 1, 10, 'JOAO FULANO', 5, 50, 3, 250, 0, 'L', '2014-07-01', '2014-11-01');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (4, 1, 10, 'JOAO FULANO', 5, 50, 4, 250, 0, 'L', '2014-09-01', '2014-12-01');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (6, 5, 5, 'SENHOR BEUTRANO', 3, 100, 1, 300, 0, 'L', '2014-12-01', '2014-12-10');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (7, 5, 5, 'SENHOR BEUTRANO', 3, 100, 2, 300, 0, 'L', '2014-12-01', '2015-02-05');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (8, 10, 25, 'SICRANO DA SILVA', 3, 25, 1, 25, 0, 'L', '2014-12-01', '2015-01-02');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (5, 1, 10, 'JOAO FULANO', 5, 50, 5, 250, 0, 'L', '2014-12-01', '2015-01-01');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (11, 5, 5, 'SENHOR BEUTRANO', 3, 100, 3, 300, 0, 'A', NULL, NULL);
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (9, 10, 25, 'SICRANO DA SILVA', 3, 25, 2, 25, 0, 'L', '2014-12-01', '2015-02-05');
INSERT INTO TB_PARCELA (PAR_CODIGO, VEN_CODIGO, CLI_CODIGO, CLI_NOME, PAR_QTDEPARC, PAR_VALORPARC, PAR_NUMPARCELA, PAR_VALORNOTA, PAR_HAVER, PAR_SITUACAO, PAR_DTPGTO, PAR_DTVENC) VALUES (10, 10, 25, 'SICRANO DA SILVA', 3, 25, 3, 25, 0, 'A', NULL, '2015-03-06');

a tabela criada e alimentada ficará mais ou menos desse jeito.

[img:descricao=tabela criada e preenchida]http://arquivo.devmedia.com.br/forum/imagem/337710-20150214-092359.jpg[/img]


faço meu código mais ele traz apenas algumas parcelas ex:


[img:descricao=SQL usado na minha pesquisa e esta saindo diferente do resultado que quero ]http://arquivo.devmedia.com.br/forum/imagem/337710-20150214-091915.jpg[/img]

[img:descricao=Resultado que mostra]http://arquivo.devmedia.com.br/forum/imagem/337710-20150214-092019.jpg[/img]
Marlos Silva

Marlos Silva

Responder

Posts

14/02/2015

Marisiana Battistella

Olá Marlos!
Não entendi porque utilizastes o NOT EXISTS no teu SELECT....
Pelo que descrevestes, um SELECT como esse resolveria:
SELECT P.VEN_CODIGO,
      P.CLI_CODIGO,
      P.CLI_NOME,
      P.PAR_NUMPARCELA,
      P.PAR_SITUACAO,
      MAX(PAR_DTPGTO) AS DATA_PGTO,
      MAX(P.PAR_NUMPARCELA) AS PAR_NUMPARCELA
FROM TB_PARCELA P
WHERE P.PAR_SITUACAO = 'L'
AND P.PAR_DTPGTO =:DATA
GROUP BY P.VEN_CODIGO,
      P.CLI_CODIGO,
      P.CLI_NOME,
      P.PAR_NUMPARCELA,
      P.PAR_SITUACAO

Não cheguei a testar o código... me avise se é isso ou não..
Responder

14/02/2015

Marlos Silva

obrigado pela sua ajuda!
o código de funcionar, funciona...
só que o resultado dele não pega apenas a ultima parcela que o meu caso, e nem mostra se a ultima parcela foi pago de fato no sistema...

ex: tenho duas parcelas 01 e 02 ambas pagas no mesmo dia.

preciso que ele me mostre apenas a segunda, mesmo que exista outras parcelas do mesmo contrato com as datas de pagamentos iguais.
Responder

19/02/2015

Marisiana Battistella

Estranho porque eu fiz um teste aqui em uma base semelhante e funcionou...
Responder

19/02/2015

Renato Rubinho

Conseguiu resolver, Marlos ?

O comando funcionou da forma que você quer tirando o P.PAR_NUMPARCELA da lista de campos e do group by, sem a necessidade do sub-select.
Acho que é isso, veja:

SELECT P.VEN_CODIGO,
      P.CLI_CODIGO,
      P.CLI_NOME,
      P.PAR_SITUACAO,
      MAX(PAR_DTPGTO) AS DATA_PGTO,
      MAX(P.PAR_NUMPARCELA) AS PAR_NUMPARCELA
FROM TB_PARCELA P
WHERE P.PAR_SITUACAO = 'L'
AND P.PAR_DTPGTO =:DATA
GROUP BY P.VEN_CODIGO,
      P.CLI_CODIGO,
      P.CLI_NOME,
      P.PAR_SITUACAO
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar