Fórum Consultar parcelas Vencidas/à vencer/Quitadas #562980

26/09/2016

0

Olá pessoal,

Estou quebrando a cabeça com algo que se parece simples.

Na minha aplicação, o usuário faz um filtro por data inicial e final, e o sistema precisa trazer as parcelas "se houver" com os 3 status separadamente; "Total Vencido", 'Total a vencer' e "Total Quitado", mas só consigo trazer dois status apenas conforme a consulta que estou deixando como amostra.

Parcelas a pagar "Não vencidas"
Select (Select sum(ValorPago) From tbFinanceiro where Status = 0 and tbFinanceiro.DataVencimento BETWEEN "2016-01-01" AND "2016-10-30") as Parcelas_apagar


Parcelas quitadas
Select (Select sum(ValorPago) From tbFinanceiro where Status = 1 and tbFinanceiro.DataVencimento BETWEEN "2016-01-01" AND "2016-10-30") as Quitadas


O campo
status
refere-se ao status de pagamento sendo (0 = Não pago) e (1 = Pago), mas agora, como é possível mostrar as parcelas "vencidas" com o status = 0 de não pago ? isso por base no intervalo de data que o usuário poderá escolher livremente.

Creio que deve ser alguma consulta que pegue a data atual e compara se existe uma parcela com vencimento menor que a data corrente e com o status = 0, assim a consulta informará que existem parcelas vencidas.

Obrigado a todos.
Fernando Alves

Fernando Alves

Responder

Post mais votado

26/09/2016

Faça os 2 selects com UNION.
E coloque um campo fixo, STATUS por exemplo.
'VENCIDO' as STATUS
'PAGO' as STATUS
'A VENCER' as STATUS.
Assim você tem uma visão completa

Luiz Santos

Luiz Santos
Responder

Gostei + 1

Mais Posts

26/09/2016

Luiz Santos

Fernando, inclui no WHERE um AND DataVendimento < Now(); onde o status for = 0.
Assim, se ele não estiver pago e a data de vendimento for menor que hoje, quer dizer que está vencido

Grande abraço
Responder

Gostei + 0

26/09/2016

Fernando Alves

Obrigado Luiz,

O problema é que essa consulta que vc me passou, implica na mesma consulta de parcelas a pagar. Repare que a sintaxe é a mesma, diferenciando apenas da função Now() na cláusula where.

A questão tb é que o usuário faz o filtro por data inicial e final.

Vencidos:
(Select sum(ValorPago) From tbFinanceiro where Status = 0 and tbFinanceiro.DataVencimento BETWEEN "2016-01-01" and Now()) as Vencidos


A pagar
(Select sum(ValorPago) From tbFinanceiro where Status = 0 and tbFinanceiro.DataVencimento BETWEEN "2016-01-01" AND "2016-09-26") as Parcelas_apagar


Resultado consulta 1: 256282,41
Resultado consulta 2: 256282,41

Eu teria que obter valores distintos entre as consultas, e não os mesmos como mostra na consulta acima. A consulta de parcelas vencidas esta trazendo as "vencidas" junto com "a pagar", e a consulta "a pagar" esta fazendo o mesmo.
Responder

Gostei + 0

26/09/2016

Fernando Alves

Como distingui-las ?
Responder

Gostei + 0

27/09/2016

Fernando Alves

Luiz, estou tendo um pouco de dificuldade,

Na minha tabela 'tbFinanceiro' eu tenho os campos 'DataVencimento', 'Status' e 'Valor', essa tabela ja esta alimentada com dados desde o começo do ano.

Eu tenho um gráfico na minha aplicação que me mostra 2 status apenas, ou seja ele faz um "group by" pelo campo status e me retorna as parcelas "Pagas" e "Não pagas". Mas agora, o cliente exigiu detalhes do gráfico que mostra "Não pagas", pois alguns registros desta consulta estão simplesmente a vencer e outros realmente vencidos. Então é por isso que preciso com apenas esses campos na tabela, mostrar 3 status diferentes; "Quitados", "A pagar" e "Vencidas".

Observações:

1)- No programa tem a "data inicial" e "data final" para o usuário escolher, o sistema tinha que trazer esses dados por esse período.

2)- Como o status de "A pagar" e "Vencidos" seriam o mesmo, ou seja "status = 0", então o resultado da consulta "A pagar" não deve somar os registros das parcelas "Vencidas". O mesmo se procede a ambos.

Consegue montar uma ou mais consultas que me traga isso separadamente ?



Exemplo na tabela;

Valor | status | Vencimento
---------------------------------
100,00 | 0 | 20/09/2016
200,00 | 0 | 20/09/2016

150,00 | 0 | 20/10/2016
450,00 | 0 | 20/10/2016

120,00 | 1 | 20/08/2016
700,00 | 1 | 20/08/2016
------------------------------

Resultado da consulta:

300,00 = Vencidos
600,00 = A pagar
820,00 = Quitados

Não tem problema se caso só conseguir em consultas separadas, eu só preciso destes dados distintos entre ambos.

Obrigado Luiz!
Responder

Gostei + 0

27/09/2016

Fernando Alves

Desculpe pela complexidade e exigência nesta consulta... rsrsrs

A ideia pode servir a outros também!

Vlw :)
Responder

Gostei + 0

27/09/2016

Luiz Santos

Relaxa Fernando.
Não desmerecendo o seu problema, ele é até simples comparado com as buchas que eu pego...rs
Como não estou com meu note aqui, fiz no SQL Server.
Adapte a lógica do SELECT que criei para o MySQL, por exemplo, trocando o GETDATE() por NOW().
A primeira parte com a tabela temporária, só gerei para poder fazer o SELECT, você não precisa fazer ai... use a sua tabela.
Segue o código.


CREATE TABLE #tbFinanceiro(
	VALOR      DECIMAL(18,2),
	[STATUS]   INT,
	VENCIMENTO DATE
)

INSERT INTO #tbFinanceiro
(Valor, status, Vencimento)
VALUES
(100 , 0 , CONVERT(DATE, '20/09/2016',103)),
(200 , 0 , CONVERT(DATE, '20/09/2016',103)),
(150 , 0 , CONVERT(DATE, '20/10/2016',103)),
(450 , 0 , CONVERT(DATE, '20/10/2016',103)),
(120 , 1 , CONVERT(DATE, '20/08/2016',103)),
(700 , 1 , CONVERT(DATE, '20/08/2016',103))

SELECT 'A PAGAR'     AS TIPO
     , SUM(VALOR) AS VALOR
  FROM #tbFinanceiro
 WHERE VENCIMENTO BETWEEN '2016-01-01' -- DT INICIAL
                      AND '2016-12-31' -- DT_FINAL
   AND STATUS = 0
   AND VENCIMENTO >= GETDATE()
UNION ALL
SELECT 'VENCIDO'     AS TIPO
     , SUM(VALOR) AS VALOR
  FROM #tbFinanceiro
 WHERE VENCIMENTO BETWEEN '2016-01-01' -- DT INICIAL
                      AND '2016-12-31' -- DT_FINAL
   AND STATUS = 0
   AND VENCIMENTO < GETDATE()
UNION ALL
SELECT 'QUITADO'     AS TIPO
     , SUM(VALOR) AS VALOR
  FROM #tbFinanceiro
 WHERE VENCIMENTO BETWEEN '2016-01-01' -- DT INICIAL
                      AND '2016-12-31' -- DT_FINAL
   AND STATUS = 1


Responder

Gostei + 1

27/09/2016

Fernando Alves

Ok Luiz, Perfeito!

Era o que eu precisava mesmo, muito obrigado!

Estou apenas incrementando adicionando outros campos da tabela que também preciso.

Sucesso pra você e até a próximo!

Abraços.
Responder

Gostei + 0

27/09/2016

Luiz Santos

De nada.
Precisando posta a duvida ai que estou sempre olhando.

Grande abs
Responder

Gostei + 0

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

Aceitar