17

I am trying to write an ELSEIF conditional statement in QGIS Field Calculator (version 1.8.0). I have used an example I found online:

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

I modified the statement as follows:

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

This statement would not run, the Output preview stated Expression is invalid. The more info stated: Parser Error: syntax error, unexpected COLUMN_REF, expecting WHEN or ELSE or END

If anyone has had this error, what did you do to fix it?

PolyGeo
  • 65,136
  • 29
  • 109
  • 338
Ryan Garnett
  • 9,479
  • 8
  • 61
  • 106

1 Answers1

28

You have a few problems in your modified statement.

  • Inconsistent use of quotes around "in progress'
  • You don't need quotes around column names.
  • You're using an "ELSEIF" when it should be a "WHEN".

The following should resolve all three issues and works for me in 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
  • 6,775
  • 5
  • 29
  • 58
  • 2
    "You don't need quotes around column names." You don't but I would still recommend it as it will help the syntax highlighter mark that part as a column. – Nathan W Nov 03 '12 at 01:20
  • @NathanW - the Syntax highlighter marks column names in red whether you use quotes or not, at least it does in my 1.8.0 install. – GIS-Jonathan Nov 05 '12 at 12:23
  • 1
    It does indeed. That is pretty embarrassing, I should have known it does that as I wrote the highlighter ;) – Nathan W Nov 05 '12 at 13:17
  • @NathanW - Understandable. I can barely remember what I wrote yesterday after all. ;-) – GIS-Jonathan Nov 05 '12 at 14:53