Problemas na consulta!

Bom dia pessoal estou com um problema no meu sql da consulta. Esse e o
SQL da consulta:

select
codigo_ponto_inicio, latitude_ponto_inicio, longitude_ponto_inicio, raio_ponto_inicio, codigo_ponto_fim,
latitude_ponto_fim, longitude_ponto_fim, raio_ponto_fim, latitude_atual, longitude_atual, codigo_viagem,
codigo_veiculo, situacao_viagem, empresa, linha, viagem, km_total, identificacao, placa, ultimaposicao,
chegadaprevista, chegadarealizada, partidaprevista, partidarealizada, final_chegada_prevista, final_chegada_realizada, final_partida_prevista, final_partida_realizada, km_percorrido, observacao_viagem, codigo_empresa, codigo_linha, codigo_ficha,

(case
when situacao_viagem < 2 then
dbo.RetornaGraficoBarraDaViagem(partidarealizada,ultimaposicao,duracao,km_percorrido,km_total)

when situacao_viagem = 2 then
dbo.RetornaGraficoBarraDaViagem(partidarealizada,final_partida_realizada,duracao,km_percorrido,km_total) end) as grafico

from dbo.vpgracompanhamentoviagemect
where situacao_viagem < 2 and codigo_empresa in (SELECT codigo FROM dbo.retornarEmpresasUsuario(559)) or
(1 = 1)
order by chegadaprevista

Quando rodo essa consulta da esse erro:

ERRO
Erro ao acessar o banco de dados
SQLState: 42000 Error Code: 195 Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]‘RetornaGraficoBarraDaViagem’ nÆo ‚ um nome da fun‡Æo interna reconhecido. SQLState: 42000 Error Code: 156 Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]Sintaxe incorreta pr¢xima … palavra-chave ‘or’.
SelectLimit(SELECT empresa, linha, viagem, identificacao, placa, situacao_viagem, ultimaposicao, observacao_viagem, chegadaprevista, chegadarealizada, partidaprevista, partidarealizada, final_chegada_prevista, final_chegada_realizada, final_partida_prevista, final_partida_realizada, RetornaGraficoBarraDaViagem(partidarealizada,ultimaposicao,duracao,km_percorrido,km_total) when situacao_viagem = 2 then dbo as grafico, codigo_viagem from dbo.vpgracompanhamentoviagemect where situacao_viagem < 2 and codigo_empresa in (SELECT codigo FROM dbo.retornarEmpresasUsuario(559)) or (1 = 1) order by chegadaprevista asc, 9, 0)

Não estou entendendo o pq, a função esta criada no banco tanto que ate roda direito lá. Alguém já teve esse problema que possa me ajudar?

Acho que o scriptcase se atrapalha um pouco quando se coloca essas funções no select. Talvez se vc fizer uma view com esse select e na consulta fazer o select na view, o scriptcase não dê problemas.