¿Usando la declaración condicional de Elseif en la calculadora de campo QGIS?

14

Estoy tratando de escribir una declaración condicional ELSEIF en QGIS Field Calculator (versión 1.8.0). He usado un ejemplo que encontré en línea:

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

Modifiqué la declaración de la siguiente manera:

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

Esta declaración no se ejecutará, la vista previa de salida indicó que la expresión no es válida. La información más indicada: Error del analizador: error de sintaxis, COLUMN_REF inesperado, esperando WHEN o ELSE o END

Si alguien ha tenido este error, ¿qué hiciste para solucionarlo?

Ryan Garnett
fuente

Respuestas:

21

Tiene algunos problemas en su declaración modificada.

  • Uso inconsistente de citas alrededor "in progress'
  • No necesita comillas alrededor de los nombres de columna.
  • Estás usando un "ELSEIF" cuando debería ser un "CUANDO".

Lo siguiente debería resolver los tres problemas y funciona para mí en 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
fuente
2
"No necesita comillas alrededor de los nombres de columna". No, pero aún así lo recomendaría, ya que ayudará al resaltador de sintaxis a marcar esa parte como una columna.
Nathan W
@NathanW: el resaltador de sintaxis marca los nombres de las columnas en rojo, ya sea que use comillas o no, al menos lo hace en mi instalación 1.8.0.
GIS-Jonathan
1
De hecho lo hace. Eso es bastante vergonzoso, debería haberlo sabido mientras escribía el marcador;)
Nathan W
@NathanW: comprensible. Apenas puedo recordar lo que escribí ayer después de todo. ;-)
GIS-Jonathan