Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou tentando fazer um relatório onde a faturação saia mensal, ou seja, tenha colunas com os 12 meses para prever uma faturação por mes e além disso fazer a previsão para os próximos 24 meses :
EX:
JAN/2016 - 0
FEV/2016 - 20
MAR/2016 - 30
ABRIL/2016 -0
.......
AGOSTO/2017 - 30
etc
Estou tentando fazendo a seguinte lógica, mas não funciona:
SELECT TO_DATE( SYSDATE , 'DD/01/YYYY') AS JANEIRO_ANO_CORRENTE
TO_DATE( SYSDATE , 'DD/02/YYYY') AS FEVEREIRO ANO_CORRENTE
TO_DATE( SYSDATE , 'DD/03/YYYY') AS MARÇO_ANO_CORRENTE
.
.
.
TO_DATE( SYSDATE , 'DD/01/YYYY+1') AS JANEIRO_PROX_ANO
TO_DATE( SYSDATE , 'DD/01/YYYY+1') AS FEVEREIRO_PROX_ANO
TO_DATE( SYSDATE , 'DD/01/YYYY+1') AS MARCO_PROX_ANO
FROM TABELA
WHERE COD = 1
É uma tabela de projetos futuros, onde existem colunas de valor TOTAL do projeto, data inicio projeto, duracao do projeto, etc.
Eu preciso que os dados saiam da seguinte forma:
ID_PROJETO,
NOME_PROJETO,
CUSTO_TOTAL_PROJETO,
CUSTO_PROJETO_JANEIRO_ATUAL,
CUSTO_PROJETO_FEVEREIRO_ATUAL,
EX: CUSTO DO PROJETO ATUAL ATÉ DEZEMRO....
CUSTO_PROJETO_JANEIRO_PROXIMO_ANO,
CUSTO_PROJETO_FEVEREIRO_PROXIMO_ANO,
EX: CUSTO DO PROJETO PROXIMO ANO ATÉ DEZEMRO....
Eu fiz o seguinte código:
--Importe ponderado(IMPLANTACCION ENERO)
(CASE A.ID_TIPO_PREVENTA
--'Alquiler'
WHEN 1 THEN (CASE
WHEN TO_CHAR(A.FECHA_FIRMA_PREVISTA,'yyyymm') = TO_CHAR(SYSDATE,'yyyymm') THEN FACT_IMP_PREV
WHEN TO_CHAR(A.FECHA_FIRMA_PREVISTA,'yyyymm') < TO_CHAR(SYSDATE,'yyyymm') THEN 0
WHEN TO_CHAR(A.FECHA_FIRMA_PREVISTA,'yyyymm') > TO_CHAR(SYSDATE,'yyyymm') THEN (CASE
WHEN SYSDATE(MES) > A.FECHA_FIRMA_PREVISTA + A.DURACION_ALQUILER THEN 0
ELSE VALOR TOTAL DO ALUGUEL /A.DURACION_ALQUILER
END)
END)
--'Licencias a la firma'
WHEN 2 THEN (CASE
--Si la fecha firma es menor que a fecha atual el proyecto no empezo y no hay dinero
WHEN A.FECHA_FIRMA_PREVISTA < CURRENT_DATE THEN 0
WHEN A.FECHA_FIRMA_PREVISTA >= CURRENT_DATE THEN (CASE
WHEN (((TRUNC(SYSDATE )- A.FECHA_FIRMA_PREVISTA)/ A.DURACION_PREVISTA) * 100) <= 9 THEN 0
WHEN (((TRUNC(SYSDATE )- A.FECHA_FIRMA_PREVISTA)/ A.DURACION_PREVISTA) 100) > 10 THEN FACT_IMP_PREV 0.3
WHEN (((TRUNC(SYSDATE )- A.FECHA_FIRMA_PREVISTA)/ A.DURACION_PREVISTA) 100) > 30 THEN FACT_IMP_PREV 0.3
WHEN (((TRUNC(SYSDATE )- A.FECHA_FIRMA_PREVISTA)/ A.DURACION_PREVISTA) 100) >= 100 THEN FACT_IMP_PREV 0.4
END)
END)
--'Licencias distribuidas'
WHEN 3 THEN
--'Manual'
WHEN 4 THEN
-- 'Manual económico'
WHEN 5 THEN
END) IMP_POND_ENERO_ATUAL
Eu estou pensando em pegar a data atual através de um SYSDATE e então subtituir apenas o mes e o ano.
por exemplo:
SYSDATE = 19/10/2016
TROCAR O MES PARA SABER SE O MES DE JANEIRO POSSUI FATURAMENTO
Trocar o mes 10 por 01. Novo Sysdate: 19/01/2016
Então um projeto que começa em março/2016 e tem 3 meses de duracao o registro sairia assim:
ID_PROJETO, = 01
NOME_PROJETO, = PROJETO EXEMPLO
CUSTO_TOTAL_PROJETO, = 900
CUSTO_PROJETO_JANEIRO_ATUAL, = 0
CUSTO_PROJETO_FEVEREIRO_ATUAL, = 0
CUSTO_PROJETO_MARÇO_ATUAL, = 300
CUSTO_PROJETO_ABRIL_ATUAL, = 300
CUSTO_PROJETO_MAIO_ATUAL, = 300
CUSTO_PROJETO_JUNHO_ATUAL, = 0
EX: CUSTO DO PROJETO ATUAL ATÉ DEZEMRO.. = 0
CUSTO_PROJETO_JANEIRO_PROXIMO_ANO, = 0
CUSTO_PROJETO_FEVEREIRO_PROXIMO_ANO, = 0
EX: CUSTO DO PROJETO PROXIMO ANO ATÉ DEZEMRO...= 0
CUSTO_PROJETO_FEVEREIRO_ATUAL, = 0
Consegui!
Segue comando se caso alguem precisar de ajuda também!
ADD_MONTHS(to_date(to_char(sysdate,'dd')||'/01/'||to_char(sysdate,'yyyy'),'dd/mm/yyyy'),48)
Como é a estrutura da tabela , como quer que saiam os dados ?