Autor Tópico: [SOLVED] Pegar ano atual do sistema para adicionar no Where da consulta - Oracle  (Lida 572 vezes)

tamnet

  • Novato
  • *
  • Mensagens: 37
Senhores,

Estou fazendo a seguinte consulta na aplicacao grafico do Scriptcase:

SELECT
CUSTO_CURSO.IDCURSO,
CURSO.ANO_REALIZACAO,
CURSO.TIPO_CURSO_IDTIPO_CURSO,
    SUM(CUSTO_CURSO.PASSAGEM),
    SUM(CUSTO_CURSO.BAGAGEM),
    SUM(CUSTO_CURSO.AJUDA),
    SUM(CUSTO_CURSO.DIARIAS),
    SUM(CUSTO_CURSO.PB_INDIA),
    SUM(CUSTO_CURSO.PB_OUTROS),
    SUM(CUSTO_CURSO.VENCIMENTOS)
FROM
    SISPLACAPE.CUSTO_CURSO, SISPLACAPE.CURSO   
WHERE  CURSO.ANO_REALIZACAO  = ((select to_char(sysdate, 'YYYY') from dual))  AND CUSTO_CURSO.IDCURSO = CURSO.IDCURSO
GROUP BY CUSTO_CURSO.IDCURSO, CURSO.ANO_REALIZACAO, CURSO.TIPO_CURSO_IDTIPO_CURSO



Está apresentando o seguinte erro:

Atenção
Erro ao acessar o banco de dados
ORA-00904: "CUSTO_CURSO"."PB_OUTROS": invalid identifier
select count(*), SUM(CUSTO_CURSO.PASSAGEM) as S_sc_field_0, SUM(CUSTO_CURSO.BAGAGEM) as S_sc_field_1, SUM(CUSTO_CURSO.AJUDA) as S_sc_field_2, SUM(CUSTO_CURSO.DIARIAS) as S_sc_field_3, SUM(CUSTO_CURSO.PB_INDIA) as S_sc_field_4, SUM(CUSTO_CURSO.PB_OUTROS) as S_sc_field_5 from (SELECT CUSTO_CURSO.IDCURSO, CURSO.ANO_REALIZACAO, CURSO.TIPO_CURSO_IDTIPO_CURSO, SUM(CUSTO_CURSO.PASSAGEM), SUM(CUSTO_CURSO.BAGAGEM), SUM(CUSTO_CURSO.AJUDA), SUM(CUSTO_CURSO.DIARIAS), SUM(CUSTO_CURSO.PB_INDIA), SUM(CUSTO_CURSO.PB_OUTROS), SUM(CUSTO_CURSO.VENCIMENTOS) FROM SISPLACAPE.CUSTO_CURSO, SISPLACAPE.CURSO WHERE CURSO.ANO_REALIZACAO = ((select to_char(sysdate, 'YYYY') from dual)) AND CUSTO_CURSO.IDCURSO = CURSO.IDCURSO GROUP BY CUSTO_CURSO.IDCURSO, CURSO.ANO_REALIZACAO, CURSO.TIPO_CURSO_IDTIPO_CURSO) nm_sel_esp




No where estou pegando apenas os itens do ano atual. Para isso estou usando a condição abaixo:

"CURSO.ANO_REALIZACAO  = ((select to_char(sysdate, 'YYYY') from dual))"

Quando coloco "CURSO.ANO_REALIZACAO  = 2016" o erro some, entao esta sendo algum problema nesse subselect para pegar o ano do sistema.


O estranho que jogando a consulta inicial diretamente no banco nâo aparece nenhum erro.

Alguem teria alguma ideia de como posso resolver iso?



« Última modificação: Julho 01, 2016, 10:33:25 am por Ronyan Alves »

Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
Re:Pegar ano atual do sistema para adicionar no Where da consulta - Oracle
« Responder #1 Online: Junho 29, 2016, 03:05:59 pm »
se proteger a sentença:
((select to_char(sysdate, 'YYYY') from dual))
Com aspas , funciona?
--

Ronyan Alves
Equipe Scriptcase

Spybr

  • Iniciante
  • **
  • Mensagens: 79
Re:Pegar ano atual do sistema para adicionar no Where da consulta - Oracle
« Responder #2 Online: Junho 29, 2016, 09:09:36 pm »
se proteger a sentença:
((select to_char(sysdate, 'YYYY') from dual))
Com aspas , funciona?


Não deu certo.

Jailton

  • Expert
  • *****
  • Mensagens: 2038
Re:Pegar ano atual do sistema para adicionar no Where da consulta - Oracle
« Responder #3 Online: Junho 30, 2016, 12:54:03 am »
Tenta assim:

WHERE
          CURSO.ANO_REALIZACAO = To_char(sysdate,'yyyy') AND CUSTO_CURSO.IDCURSO = CURSO.IDCURSO
GROUP BY
          CUSTO_CURSO.IDCURSO, CURSO.ANO_REALIZACAO, CURSO.TIPO_CURSO_IDTIPO_CURSO
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

Kleyber

  • Expert
  • *****
  • Mensagens: 2237
    • Email
Re:Pegar ano atual do sistema para adicionar no Where da consulta - Oracle
« Responder #4 Online: Junho 30, 2016, 11:18:33 am »
Acho que tem parênteses demais nesse select. Poderia testar com CURSO.ANO_REALIZACAO  = (select to_char(sysdate, 'YYYY') from dual)"
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

tamnet

  • Novato
  • *
  • Mensagens: 37
Re:Pegar ano atual do sistema para adicionar no Where da consulta - Oracle
« Responder #5 Online: Junho 30, 2016, 04:13:03 pm »
Resolvi inserindo na condição o ANO_ATUAL vindo de uma variavel global.