Consultar parcelas Vencidas/à vencer/Quitadas
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"
Parcelas quitadas
O campo
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.
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
Curtidas 0
Melhor post
Luiz Santos
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
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
GOSTEI 1
Mais Respostas
Luiz Santos
26/09/2016
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
Assim, se ele não estiver pago e a data de vendimento for menor que hoje, quer dizer que está vencido
Grande abraço
GOSTEI 0
Fernando Alves
26/09/2016
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:
A pagar
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.
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.
GOSTEI 0
Fernando Alves
26/09/2016
Como distingui-las ?
GOSTEI 0
Fernando Alves
26/09/2016
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!
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!
GOSTEI 0
Fernando Alves
26/09/2016
Desculpe pela complexidade e exigência nesta consulta... rsrsrs
A ideia pode servir a outros também!
Vlw :)
A ideia pode servir a outros também!
Vlw :)
GOSTEI 0
Luiz Santos
26/09/2016
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.
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
GOSTEI 1
Fernando Alves
26/09/2016
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.
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.
GOSTEI 0
Luiz Santos
26/09/2016
De nada.
Precisando posta a duvida ai que estou sempre olhando.
Grande abs
Precisando posta a duvida ai que estou sempre olhando.
Grande abs
GOSTEI 0