13

I've looked up some of the other Q&As on this topic, however, none have addressed what I am seeking to do.

I have a large data set and I would like to search one field for any values over a certain amount (in this case 20) and if the value is larger than 20, I would like to return a value of 1 in another field, otherwise return a value of 0.

I have tried writing something with no luck.

I am using QGIS 2.8.

  • I'm trying to figure out this express in Qgis but it doesn't have results. Case WHEN "A" = '1' and "LENGHT" <= 1 then "C"= '4' ELSE ERROR END – giss Dec 1 '17 at 13:26
26

The easy way

The most simple way to do this is to create a new field with the expression

"cat" > 20

This expression will evaluate to a boolean True/False which will be represented as an integer 1 or 0.

Virtual Fields

You can also create a virtual field, which will automatically return an updated value in case the values in cat change (e.g. you edit the layer). Remember that the values of virtual fields will not be saved in the dataset and are only visible inside this QGIS project.

More than boolean

If you have more than a simple "greater than", you need to use

CASE 
  WHEN "cat" > 100 THEN 2
  WHEN "cat" > 10 THEN 1
  ELSE 0
END
5

I just tested this : You can use the condition several times:

WHEN    cat =   1   THEN    205
WHEN    cat =   2   THEN    215
WHEN    cat =   3   THEN    225
WHEN    cat =   4   THEN    235
...

....

4

Something like this perhaps:

case 
when "FIELD" > 20 then 1
else 0 
end

Field Calculator

protected by Community Sep 16 '18 at 2:20

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.