Quebra dinâmica

Tenho uma coluna de data, e preciso tratar o resultado para exibir na quebra.
Já coloquei CASE no sql, mas o problema é que tenho duas posições retornando no sql.
DataChegada, com o valor original do banco.
DataC, com o resultado do case.

Preciso que no CASE eu possa passar o valor original de DataChegada.

Por exemplo:
CASE
WHEN DataChegada = ‘1700-01-01’ THEN ‘Nada consta’
WHEN DataChegada IS NOT NULL THEN DataChegada
WHEN DataChegada IS NULL THEN ’ - ’
END AS DataC

A cláusula do meio dá erro. Conversão de tipo data para tipo texto.
Nem usando CAST funciona.
Acredito que não seja possível essa operação.

Sugestões?

Isso e erro de SQL mesmo meu amigo

Si o tipo de dado devolvido e do tipo data se case deve sempre retornar data.
Outra coisa veja no BD que estas usando creio eu ser SQLSRV acho que o calendário dele não chega ate 1700 tenta 1900 ou 1990

CASE
   WHEN DataChegada = '1900-01-01' THEN 'Nada consta' 
   WHEN DataChegada IS NOT NULL THEN cast(DataChegada as varchar(20))
   WHEN DataChegada IS NULL THEN ' - '
END AS DataC

É o Microsoft SQL Server e ele aceita 1700, gravou sem problemas. Na verdade, o 1700 é um valor que usamos para identificar quando o registro não tem data.
O projeto começa com datas de 1800.

O mais simples seria mudar a coluna do tipo data para tipo varchar, mas eles não querem, então estamos tentando contornar.

Outra alternativa seria concatenar valores em uma coluna só, mas também não está funcionando, justamente por serem tipos diferentes. Nem o CAST, nem o CONVERT estão dando jeito.
Tenso.

Tire o case, faça a quebra pelo campo mesmo e faça via lookup no onRecord

Mas a quebra só funciona com resultados que venham diretamente do SQL, se eu for tratar no OnRecord, só vai alterar o valor que aparecer na listagem, não o valor da quebra.
Em outras aplicações esses mesmos dados são listados e eu faço esse tratamento pelo evento, mas nessa aplicação, tem que ser na quebra.

Eu consegui fazer uma query que funciona no ms sql, mas o scriptcase não aceita.

CASE WHEN DataChegada = '1700-01-01' THEN 'Nada consta' WHEN DataChegada <> '1700-01-01' THEN CONVERT(CHAR(10),DataChegada,101) END AS datac

Isso funciona, quando tem data ele mostra ela no formato bonitinho dd/mm/aaaa e quando não tem data, aparece o texto.
Quando coloco a query na aplicação de consulta e escolho o campo “datac” na quebra, o campo aparece em branco. Ele não mostra nenhum dos valores. No caso do “Nada consta” aparece “-”.

Sugestões?

CASE
   WHEN DataChegada = '1700-01-01' THEN null
   WHEN DataChegada <> '1700-01-01' THEN CONVERT(CHAR(10),DataChegada,101)
END AS datac


ou  

CASE
   WHEN DataChegada = '1700-01-01' THEN  CONVERT(CHAR(10),'1700-01-01',101)
   WHEN DataChegada <> '1700-01-01' THEN CONVERT(CHAR(10),DataChegada,101)
END AS datac

Faça o código via Storage Procedure, com os parâmetros devidos e crie uma aplicação procedure no SC.