Menggunakan Pernyataan Bersyarat Elseif dalam Kalkulator Bidang QGIS?

14

Saya mencoba untuk menulis pernyataan bersyarat ELSEIF dalam Kalkulator Bidang QGIS (versi 1.8.0). Saya telah menggunakan contoh yang saya temukan online:

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

Saya memodifikasi pernyataan sebagai berikut:

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

Pernyataan ini tidak akan berjalan, pratinjau Output menyatakan Ekspresi tidak valid. Info selengkapnya menyatakan: Parser Error: kesalahan sintaks, COLUMN_REF yang tidak terduga, mengharapkan WHEN atau ELSE atau END

Jika ada yang mengalami kesalahan ini, apa yang Anda lakukan untuk memperbaikinya?

Ryan Garnett
sumber

Jawaban:

21

Anda memiliki beberapa masalah dalam pernyataan yang dimodifikasi.

  • Penggunaan kutipan yang tidak konsisten "in progress'
  • Anda tidak perlu mengutip di sekitar nama kolom.
  • Anda menggunakan "ELSEIF" padahal seharusnya "KETIKA".

Berikut ini harus menyelesaikan ketiga masalah dan berfungsi untuk saya di 1.8.0:

CASE WHEN GRID_ID = 1 THEN 'complete'
  WHEN GRID_ID = 2 THEN 'in progress'
  ELSE 'not started'
END
GIS-Jonathan
sumber
2
"Kamu tidak perlu tanda kutip di sekitar nama kolom." Anda tidak tetapi saya masih akan merekomendasikannya karena ini akan membantu sintaks menandai bagian itu sebagai kolom.
Nathan W
@NathanW - highlighter Syntax menandai nama kolom berwarna merah apakah Anda menggunakan tanda kutip atau tidak, setidaknya itu ada pada install 1.8.0 saya.
GIS-Jonathan
1
Memang benar. Itu sangat memalukan, saya seharusnya tahu itu melakukan itu ketika saya menulis stabilo;)
Nathan W
@NathanW - Dapat dimengerti. Saya hampir tidak dapat mengingat apa yang saya tulis kemarin. ;-)
GIS-Jonathan