Використання умовної заяви Elseif у польовому калькуляторі QGIS?


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, очікуючи КОЛИ або 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.
GIS-Jonathan

1
Це дійсно так. Це досить бентежно, я мав би знати, що він це робить, як я писав підсвічувачем;)
Nathan W

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