ใช้คำสั่งแบบมีเงื่อนไข Elseif ในเครื่องคำนวณฟิลด์ QGIS หรือไม่


14

ฉันกำลังพยายามเขียนคำสั่งเงื่อนไข ELSEIF ในเครื่องคำนวณภาคสนาม QGIS (รุ่น 1.8.0) ฉันได้ใช้ตัวอย่างที่ฉันพบทางออนไลน์:

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

ฉันแก้ไขคำสั่งดังนี้:

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

คำสั่งนี้จะไม่ทำงานการแสดงตัวอย่างเอาต์พุตที่ระบุนิพจน์นั้นไม่ถูกต้อง ข้อมูลเพิ่มเติมที่ระบุไว้: ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์, COLUMN_REF ที่ไม่คาดคิดโดยคาดว่า WHEN หรือ ELSE หรือ END

หากใครมีข้อผิดพลาดนี้คุณจะแก้ไขอย่างไร

คำตอบ:


21

คุณมีปัญหาเล็กน้อยในคำสั่งที่ปรับเปลี่ยนของคุณ

  • การใช้คำพูดไม่สอดคล้องกันรอบตัว "in progress'
  • คุณไม่จำเป็นต้องใส่เครื่องหมายคำพูดรอบ ๆ ชื่อคอลัมน์
  • คุณกำลังใช้ "ELSEIF" เมื่อมันควรจะเป็น "เมื่อ"

ต่อไปนี้ควรแก้ไขปัญหาทั้งสามและทำงานสำหรับฉันใน 1.8.0:

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

2
"คุณไม่จำเป็นต้องใส่เครื่องหมายคำพูดรอบ ๆ ชื่อคอลัมน์" คุณทำไม่ได้ แต่ฉันจะยังคงแนะนำเพราะมันจะช่วยเน้นเครื่องหมายเน้นข้อความในส่วนนั้นเป็นคอลัมน์
นาธาน W

@NathanW - ปากกาเน้นข้อความไวยากรณ์ทำเครื่องหมายชื่อคอลัมน์เป็นสีแดงไม่ว่าคุณจะใช้เครื่องหมายคำพูดหรือไม่ก็ตามอย่างน้อยก็ในการติดตั้ง 1.8.0 ของฉัน
GIS-Jonathan

1
มันไม่แน่นอน นั่นคือสวยน่าอายฉันควรจะได้รู้จักกันก็ไม่ว่าในฐานะที่ผมเขียนเน้น;)
นาธาน W

@NathanW - เข้าใจได้ ฉันแทบจำไม่ได้ว่าฉันเขียนอะไรเมื่อวานนี้ ;-)
GIS- Jonathan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.