[SOLVED] Pegar ano atual do sistema para adicionar no Where da consulta - Oracle

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?

se proteger a sentença:
((select to_char(sysdate, ‘YYYY’) from dual))
Com aspas , funciona?

Não deu certo.

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

Acho que tem parênteses demais nesse select. Poderia testar com CURSO.ANO_REALIZACAO = (select to_char(sysdate, ‘YYYY’) from dual)"

Resolvi inserindo na condição o ANO_ATUAL vindo de uma variavel global.