Galera,

Tô com uma dúvida básica aqui: preciso fazer um case when numa data no 
Firebird 1.5 ou superior, não sei nem se funciona.
Na verdade não dá erro, mas não retorna corretamente os dados. Pra 
resumir preciso copiar parte da string de um campo se a data for 
inferior a 01/07/2007. Por exemplo:

DATA..............OPERADOR
01/01/2007.......ODAIR
12/10/2007.......ODAIR
13/08/2007.......DG-ADRIANO

Se for menor que 01/07/2007 copia do inicio até o fim, retornando ODAIR. 
Se for superior a esta data copia do caracter depois do traço pra frente 
ficando ADRIANO.

O resultado tem que ser este.
DATA..............OPERADOR
01/01/2007.......ODAIR
12/10/2007.......ODAIR
13/08/2007.......ADRIANO

Fiz a select abaixo, não dá erro, mas tb não respeita o CASE WHEN.
Vlw

SELECT
  LP.*, FL.NOME AS NM_FILIAL, HS.HISTORICO AS NM_OCORRENCIA,
  (CASE
    WHEN LP.DT_LANCAMENTO < '07-19-2006' THEN SUBSTR(LP.OPERADOR, 1, 15)
    WHEN LP.DT_LANCAMENTO > '07-19-2006' THEN SUBSTR(LP.OPERADOR, 4, 15)
   END
  ) AS NM_OPERADOR
FROM
  STWCOLTLANP LP
LEFT JOIN STWOPETFIL FL
  ON (LP.FIL_LANCAMENTO = FL.FILIAL)
LEFT JOIN STWCOLTHIS HS
  ON (LP.OCORRENCIA = HS.CODIGO)

-- 
Adriano Santos
-------------------------------------------------------------
Editor Técnico Revista ClubeDelphi
www.delphitodelphi.blogspot.com
www.devmedia.com.br
www.devmedia.com.br/clubedelphi/pagina.asp

Responder a