Oracle - Clausula SQL?

10 respostas Resolvido
sqloracle
F

Tenho uma tabela simples com os campos: data (data do cadastro), numero_parcelas ( números de parcelas de um financiamento) e valor_parcelas ( valor de cada parcela).
Com isso preciso fazer uma sql que a partir da data atual, mostre para mim quais registros terminam o financiamento em no máximo 6 meses.

Se alguém puder me ajudar eu agradeço.

Att.

10 Respostas

guilhermebhte
SELECT * FROM TABELA WHERE data >= data_atual &&  data >= (data_atual + 6).

Qual é o banco de dados ?

F

Bom dia Guilherme, o banco é Oracle

F

eu escrevi que deu certo, mas ai fui validar e vi que o sistema esta puxando datas invalidas

F
SELECT V3.DATA AS  "DATA-CADASTRO", 
       ADD_MONTHS(TRUNC(V3.DATA), v3.meses) DATA_FINAL 
FROM VENDA_FINANCIAMENTO V3

Um detalhe que não mencionei, usei a SQL acima para determinar a data final e esta show, mas ainda não consegui fazer uma condição que determinasse o fim do financiamento nos próximos 6 meses

guilhermebhte

Tenta assim

SELECT  
V3.DATA AS  "DATA-CADASTRO", 
ADD_MONTHS(TRUNC(V3.DATA), 6) DATA_FINAL
FROM VENDA_FINANCIAMENTO V3
F

Bom dia guilhermebhte, primeiramente obrigado pela atenção, mas se eu usar desta forma
a query ira me retornar somente as datas apos 6 meses do cadastro, exemplo se eu tiver um finaciamento de 48 meses com data de cadastro de 01/04/2015, sendo que o final seria 01/04/2019.
Entaão eu preciso de uma query que me retorno um relatorio que tenhas datas finalizando a partir de hoje (sysdate) até 6 meses a frente, no caso o cadastro que finaliza 01/04/2019 deve ser retornado no relatorio

F
Solucao aceita

SELECT V3.DATA AS “DATA-CADASTRO”,
ADD_MONTHS(TRUNC(V3.DATA), v3.meses) DATA_FINAL
FROM VENDA_FINANCIAMENTO V3
AND ADD_MONTHS(TRUNC(V3.DATA), v3.meses) >= ‘26/03/2019’ and ADD_MONTHS(TRUNC(V3.DATA), v3.meses) <= ‘26/08/2019’

Coloquei da forma acima, deu certo, mas queria refatorar isso colocar de forma mais limpa.
Pra efeito de elegância e didática no código se algum tiver alguma forma agradecerei.
Att
:slight_smile: bjs

guilhermebhte

Mas acho que você postou isso

guilhermebhte

Mas se deu certo, está ok

S

De forma mais clara seria isso ?

SELECT V3.DATA AS DATA - CADASTRO, ADD_MONTHS(TRUNC(V3.DATA), V3.MESES) DATA_FINAL

FROM VENDA_FINANCIAMENTO V3

WHERE ADD_MONTHS(TRUNC(V3.DATA), V3.MESES) >= TRUNC(SYSDATE)

AND ADD_MONTHS(TRUNC(V3.DATA), V3.MESES) <= ADD_MONTHS(TRUNC(SYSDATE), 6);
Criado 25 de março de 2019
Ultima resposta 27 de mar. de 2019
Respostas 10
Participantes 3