Jump to content
Sign in to follow this  
fimiani_lucas

Chumbar um valor em um Sysdate

Recommended Posts

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

Share this post


Link to post
Share on other sites

Como é a estrutura da tabela , como quer que saiam os dados ?

Share this post


Link to post
Share on other sites

É 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Viniciusr9
      Boa tarde pessoal,
      basicamente eu preciso do retorno de horas entre duas datas, porém tenho condições a tratar .
      basicamente tenho 2 colunas ( dt_fim e dt_ini ) que representam data final e data inicial. Preciso da diferença entre as duas retornada em uma outra coluna (hr_ausencias) , porém a cada dia posso computar no máximo 9 horas, e desconsiderar finais de semana e feriados( esses cadastrados em uma tabela) . Seria melhor tratar isso com uma Trigger , um Script PL/SQL , como me sugerem? Agradeço quem puder ajudar.
    • By edvaldo joviano de paula
      Prezados, boa tarde!
      Preciso de uma ajuda sendo possível:
       
      Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3)
      select codkit, produtos from kit where codkit = 1
      ---   ----
      1    2
      1    3
      Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo:
      kit 1 (2,3)
      kit 4 (2,10)
      kit 5 (3,11).
       
      Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4.
       
      Espero ter explicado de forma a ser entendido e agradeço a ajuda.
       
    • By Viniciusr9
      Boa tarde pessoal,
      Sei que tem varios tópicos sobre esse erro, porém analisei todos e nenhum foi aplicável ao meu caso ( a maioria era porquê o pessoal esquecia do Group By ao final das Querys) . 
      Se alguém puder ajudar, agradeço . Os campos sem função estão inseridos no group by, porém o erro persiste .
       
       

       
      SELECT * FROM( select LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA AS PROJETO, E.DS_EQUIPE as EQUIPE, SUM(NVL((CC.QT_HORAS_CHEIA - SUM(AU.DT_FIM - AU.DT_INI)*24 ),CC.QT_HORAS_CHEIA)) as "ESFORÇO CALCULADO" from EQUIPE E, COLABORADOR C1, COMPETENCIA C, COMPETENCIA_COLABORADOR CC, AUSENCIAS AU where E.CD_EQUIPE=CC.CD_EQUIPE and C.CD_COMPETENCIA=CC.CD_COMPETENCIA and C1.CD_COLABORADOR=CC.CD_COLABORADOR and C1.STATUS = 1 AND C1.CD_GESTOR <> C1.CD_COLABORADOR AND AU.CD_COLABORADOR (+) = C1.CD_COLABORADOR GROUP BY E.DS_EQUIPE, LPAD(C.MES_COMPETENCIA,2,'0') ||'/'||C.ANO_COMPETENCIA ) VT WHERE VT.PROJETO = ((select to_char(sysdate, 'MM') from dual)||'/'||(select to_char(sysdate, 'RRRR') from dual))  
    • By massaotoda
      estou tentando fazer a conexão ao banco de dados oracle 11g no delphi 10.2 pelo fireDAC e está reportando o seguinte erro ao conectar:
      [FireDAC][Phys][Ora] Ora-12546: TNS: permission denied.

      já mandei para o DBA para verificar e ainda não consegui o retorno, fiz o teste conectando em outro banco de dados por exemplo do firebird e conectou ok...

      Alguém saberia me disse qual seria esta permissão para resolver o problema???
    • By alextds
      olá gostaria de saber como fazer para obter o rank das 5 maiores vendas.
      tenho a seguinte tabela:
       
      data                 produto    valor
      31/01/2018    calça       100
      31/01/2018    calça        50
      31/01/2018    camisa    30
      31/01/2018    camisa    30
      31/01/2018    sapato     75
      31/01/2018    bermuda 100
      31/01/2018    meia         10
      31/01/2018    tenis         65
      31/01/2018    luva          20
      31/01/2018    luva          20
      31/01/2019    calça       100
      31/01/2019    calça        50
      31/01/2019    camisa    30
      31/01/2019    camisa    30
      31/01/2019    sapato    75
      31/01/2019    bermuda 100
      31/01/2019    meia         10
      31/01/2019    tenis         65
      31/01/2019    luva          20
      31/01/2019    luva          20  
       
      Preciso que totalize os valores de acordo a data e produto e que apareça somente os 5 primeiros dessa forma  :
       
      data                 produto       valor   rank
      31/01/2018    calça           150      1
      31/01/2018    bermuda    100       2
      31/01/2018    sapato        75         3
      31/01/2018    tenis            65        4
      31/01/2018    camisa        60        5
      31/01/2019    calça           150      1
      31/01/2019    bermuda     100      2
      31/01/2019    sapato         75        3
      31/01/2019    tenis             65       4
      31/01/2019    camisa         60       5
       
      Se alguém tiver uma solução facil agradeço.
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.