QGIS Field CalculatorでElseif条件付きステートメントを使用していますか?


14

QGIS Field Calculator(バージョン1.8.0)でELSEIF条件ステートメントを記述しようとしています。オンラインで見つけた例を使用しました。

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

ステートメントを次のように変更しました。

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

このステートメントは実行されず、出力プレビューに式が無効であると記載されました。詳細情報:パーサーエラー:構文エラー、予期しないCOLUMN_REF、WHENまたはELSEまたはENDが必要です

このエラーが発生した場合、それを修正するために何をしましたか?

回答:


21

変更したステートメントにいくつかの問題があります。

  • 引用符の一貫性のない使用 "in progress'
  • 列名を引用符で囲む必要はありません。
  • 「WHEN」にする必要があるときに「ELSEIF」を使用しています。

以下は3つの問題すべてを解決し、1.8.0で機能します。

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

2
「列名を引用符で囲む必要はありません。」そうではありませんが、シンタックスハイライターがその部分を列としてマークするのに役立つので、お勧めします。
ネイサンW

@NathanW-シンタックスハイライターは、引用符を使用するかどうかにかかわらず、列名を赤でマークします。少なくとも私の1.8.0インストールではそうです。
GISジョナサン

1
確かにそうです。それはかなり恥ずかしいです、蛍光
ネイサンW

@NathanW-わかりやすい。結局、昨日書いたものをかろうじて思い出すことができます。;-)
GIS-ジョナサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.