QGIS Alan Hesaplayıcısında Elseif Koşullu Deyimi Kullanıyor musunuz?


14

QGIS Alan Hesaplama (sürüm 1.8.0) bir ELSEIF koşullu ifade yazmaya çalışıyorum. Çevrimiçi bulduğum bir örnek kullandım:

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

Beyanı şu şekilde değiştirdim:

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

Bu ifade çalışmaz, İfadenin geçersiz olduğu ifade edilen Çıktı önizlemesi geçersizdir. Daha fazla bilgi belirtildi: Ayrıştırıcı Hatası: sözdizimi hatası, beklenmeyen COLUMN_REF, WHEN veya ELSE veya END bekleniyor

Birisi bu hatayı aldıysa, düzeltmek için ne yaptınız?

Yanıtlar:


21

Değiştirilmiş bildiriminizde birkaç sorun var.

  • Fiyat tekliflerinin tutarsız kullanımı "in progress'
  • Sütun adlarında tırnak işareti kullanmanıza gerek yoktur.
  • "NE ZAMAN" olması gerektiğinde "ELSEIF" kullanıyorsunuz.

Aşağıdakiler her üç sorunu da çözmeli ve 1.8.0'da benim için çalışır:

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

2
"Sütun adlarında tırnak işareti kullanmanıza gerek yok." Yapmıyorsunuz ama yine de sözdizimi vurgulayıcısının bu kısmı bir sütun olarak işaretlemesine yardımcı olacağı için tavsiye ederim.
Nathan W

@NathanW - Sözdizimi vurgulayıcı, tırnak işareti olsun ya da olmasın sütun adlarını kırmızı renkle işaretler, en azından 1.8.0 yüklememde yapar.
GIS-Jonathan

1
Gerçekten de öyle. Bu oldukça utanç verici, vurgulayıcıyı yazarken bunu yaptığını bilmeliydim;)
Nathan W

@NathanW - Anlaşılabilir. Sonuçta dün ne yazdığımı zar zor hatırlıyorum. ;-)
GIS-Jonathan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.