Usando outra declaração condicional na calculadora de campo QGIS?

14

Estou tentando escrever uma declaração condicional ELSEIF na calculadora de campo QGIS (versão 1.8.0). Eu usei um exemplo que encontrei online:

CASE WHEN val < 0 THEN 'negative'
  WHEN val = 0 THEN "neutral'
  ELSE 'positive'
END

Modifiquei a declaração da seguinte maneira:

CASE WHEN  "GRID_ID"  = 1 THEN 'complete'
  ELSEIF  "GRID_ID"  = 2 THEN "in progress'
  ELSE 'not started'
END

Esta instrução não seria executada, a visualização de saída declarada Expressão é inválida. As informações a mais informavam: Erro do analisador: erro de sintaxe, inesperado COLUMN_REF, esperando WHEN ou ELSE ou END

Se alguém teve esse erro, o que você fez para corrigi-lo?

Ryan Garnett
fonte

Respostas:

21

Você tem alguns problemas na sua declaração modificada.

  • Uso inconsistente de aspas ao redor "in progress'
  • Você não precisa de aspas em torno dos nomes das colunas.
  • Você está usando um "ELSEIF" quando deveria ser um "QUANDO".

O seguinte deve resolver todos os três problemas e funciona para mim no 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
fonte
2
"Você não precisa de aspas em torno dos nomes das colunas." Você não, mas eu ainda o recomendaria, pois ajudará o marcador de sintaxe a marcar essa parte como uma coluna.
Nathan W
@NathanW - o marcador de sintaxe marca os nomes das colunas em vermelho, independentemente de você usar aspas ou não, pelo menos na minha instalação 1.8.0.
amigos estão
1
De fato. Isso é muito embaraçoso, eu deveria ter conhecido ele faz isso como eu escrevi o marcador;)
Nathan W
@NathanW - Compreensível. Mal consigo me lembrar do que escrevi ontem, afinal. ;-)
GIS-Jonathan