Utilizzo dell'istruzione condizionale Elseif nel calcolatore di campo QGIS?


14

Sto cercando di scrivere una dichiarazione condizionale ELSEIF in QGIS Field Calculator (versione 1.8.0). Ho usato un esempio che ho trovato online:

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

Ho modificato la dichiarazione come segue:

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

Questa istruzione non verrebbe eseguita, l'anteprima dell'output ha dichiarato che L'espressione non è valida. Maggiori informazioni dichiarate: Errore parser: errore di sintassi, COLUMN_REF imprevisto, in attesa di QUANDO o ELSE o FINE

Se qualcuno ha riscontrato questo errore, cosa hai fatto per risolverlo?

Risposte:


21

Hai qualche problema nella tua dichiarazione modificata.

  • Uso incoerente delle virgolette intorno "in progress'
  • Non hai bisogno di virgolette attorno ai nomi delle colonne.
  • Stai usando un "ELSEIF" quando dovrebbe essere un "QUANDO".

Quanto segue dovrebbe risolvere tutti e tre i problemi e funziona per me in 1.8.0:

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

2
"Non hai bisogno di virgolette attorno ai nomi delle colonne." Non lo fai, ma lo consiglierei comunque in quanto aiuterà l'evidenziatore della sintassi a contrassegnare quella parte come una colonna.
Nathan W,

@NathanW - l'evidenziatore Syntax contrassegna i nomi delle colonne in rosso, sia che tu utilizzi le virgolette o meno, almeno nella mia installazione 1.8.0.
GIS-Jonathan,

1
Lo fa davvero. È abbastanza imbarazzante, avrei dovuto saperlo mentre scrivevo l'evidenziatore;)
Nathan W,

@NathanW - Comprensibile. Dopo tutto, riesco a malapena a ricordare quello che ho scritto ieri. ;-)
GIS-Jonathan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.