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?

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.