Korzystasz z instrukcji warunkowej Elseif w kalkulatorze polowym QGIS?

14

Próbuję napisać instrukcję warunkową ELSEIF w Kalkulatorze polowym QGIS (wersja 1.8.0). Użyłem przykładu znalezionego online:

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

Zmodyfikowałem oświadczenie w następujący sposób:

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

Ta instrukcja nie będzie działać, w podglądzie wyników stwierdzono, że wyrażenie jest nieprawidłowe. Więcej informacji podano: Błąd analizatora składni: błąd składni, nieoczekiwany COLUMN_REF, oczekiwanie KIEDY, ELSE lub KONIEC

Jeśli ktoś miał ten błąd, co zrobiłeś, aby go naprawić?

Ryan Garnett
źródło

Odpowiedzi:

21

W zmodyfikowanym wyciągu masz kilka problemów.

  • Niespójne stosowanie cytatów "in progress'
  • Nie potrzebujesz cudzysłowów wokół nazw kolumn.
  • Używasz „ELSEIF”, gdy powinien to być „KIEDY”.

Następujące powinny rozwiązać wszystkie trzy problemy i działa dla mnie w 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
źródło
2
„Nie potrzebujesz cudzysłowów wokół nazw kolumn”. Nie, ale nadal polecałbym to, ponieważ pomoże to wyróżnieniu składni oznaczyć tę część jako kolumnę.
Nathan W
@NathanW - wyróżnienie składni oznacza nazwy kolumn na czerwono, niezależnie od tego, czy używasz cudzysłowów, czy nie, przynajmniej w mojej instalacji 1.8.0.
GIS-Jonathan
1
Rzeczywiście tak jest. To dość zawstydzające, powinienem był wiedzieć, że to robi, kiedy pisałem zakreślacz;)
Nathan W
@NathanW - zrozumiałe. W końcu ledwo pamiętam, co napisałem. ;-)
GIS-Jonathan