Verwenden Sie Elseif Conditional Statement im QGIS Field Calculator?

14

Ich versuche, eine bedingte ELSEIF-Anweisung in QGIS Field Calculator (Version 1.8.0) zu schreiben. Ich habe ein Beispiel verwendet, das ich online gefunden habe:

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

Ich habe die Aussage wie folgt geändert:

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

Diese Anweisung wird nicht ausgeführt. Die in der Ausgabevorschau angegebene Expression ist ungültig. Weitere Informationen angegeben: Parser-Fehler: Syntaxfehler, unerwarteter COLUMN_REF, erwartet WHEN oder ELSE oder END

Wenn jemand diesen Fehler hatte, was haben Sie getan, um ihn zu beheben?

Ryan Garnett
quelle

Antworten:

21

Sie haben einige Probleme mit Ihrer geänderten Anweisung.

  • Inkonsistente Verwendung von Anführungszeichen "in progress'
  • Sie brauchen keine Anführungszeichen um Spaltennamen.
  • Sie verwenden ein "ELSEIF", wenn es ein "WANN" sein soll.

Das Folgende sollte alle drei Probleme lösen und funktioniert für mich in 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
quelle
2
Msgstr "Sie brauchen keine Anführungszeichen um Spaltennamen." Sie tun es nicht, aber ich würde es trotzdem empfehlen, da es dem Syntax-Textmarker hilft, diesen Teil als Spalte zu markieren.
Nathan W
@ NathanW - Der Syntax-Textmarker markiert die Spaltennamen rot, unabhängig davon, ob Sie Anführungszeichen verwenden oder nicht, zumindest in meiner 1.8.0-Installation.
GIS-Jonathan
1
Das tut es in der Tat. Das ist ziemlich peinlich, ich hätte wissen müssen, dass es das tut, als ich den Textmarker schrieb;)
Nathan W
@ NathanW - verständlich. Ich kann mich kaum erinnern, was ich gestern geschrieben habe. ;-)
GIS-Jonathan