17 votos

Uso de la sentencia condicional Elseif en la calculadora de campos de QGIS?

Estoy intentando escribir una sentencia condicional ELSEIF en QGIS Field Calculator (versión 1.8.0). He utilizado un ejemplo que encontré en Internet:

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

He modificado 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 sentencia no se ejecuta, la vista previa de la salida declaró que la expresión no es válida. La información adicional indicaba: Parser Error: error de sintaxis, COLUMN_REF inesperado, esperando WHEN o ELSE o END

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

28voto

rkthkr Puntos 6651

Tienes algunos problemas en tu declaración modificada.

  • Uso incoherente de las comillas alrededor de "in progress'
  • No es necesario entrecomillar los nombres de las columnas.
  • Estás usando un "ELSEIF" cuando debería ser un "WHEN".

Lo siguiente debería resolver los tres problemas y a mí me funciona en la versión 1.8.0:

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

2 votos

"No necesitas las comillas alrededor de los nombres de las columnas". No es necesario, pero aún así lo recomiendo, ya que ayudará a que el resaltador de sintaxis marque esa parte como una columna.

0 votos

@NathanW - El resaltador de sintaxis marca los nombres de las columnas en rojo tanto si se usan comillas como si no, al menos lo hace en mi instalación 1.8.0.

1 votos

En efecto, así es. Eso es bastante vergonzoso, debería haber sabido que lo hace como escribí el resaltador ;)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X