Используете условное выражение Elseif в QGIS Field Calculator?


14

Я пытаюсь написать условное утверждение ELSEIF в QGIS Field Calculator (версия 1.8.0). Я использовал пример, который я нашел в Интернете:

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'
  • Вам не нужны кавычки вокруг имен столбцов.
  • Вы используете «ELSEIF», когда это должно быть «КОГДА».

Следующее должно решить все три проблемы и работает для меня в 1.8.0:

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

2
«Вам не нужны кавычки вокруг имен столбцов». Вы этого не сделаете, но я все равно рекомендую его, так как он поможет подсветке синтаксиса пометить эту часть как столбец.
Натан Вт

@NathanW - Подсветка синтаксиса помечает имена столбцов красным цветом, используете ли вы кавычки или нет, по крайней мере, в моей версии 1.8.0.
ГИС-Джонатан

1
Это действительно так. Это довольно неловко, я должен был знать, что делает это так, как я написал для маркера;)
Натан W

@NathanW - Понятно. Я едва помню, что я написал вчера. ;-)
ГИС-Джонатан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.