Sử dụng Elseif Tuyên bố có điều kiện trong Máy tính Trường QGIS?


14

Tôi đang cố gắng viết một tuyên bố có điều kiện ELSEIF trong Máy tính Trường QGIS (phiên bản 1.8.0). Tôi đã sử dụng một ví dụ tôi tìm thấy trên mạng:

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

Tôi đã sửa đổi tuyên bố như sau:

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

Tuyên bố này sẽ không chạy, Bản xem trước đầu ra đã nêu Biểu thức không hợp lệ. Thông tin thêm đã nêu: Lỗi trình phân tích cú pháp: lỗi cú pháp, lỗi không mong muốn COLUMN_REF, mong đợi KHI hoặc ELSE hoặc END

Nếu bất cứ ai đã có lỗi này, bạn đã làm gì để khắc phục nó?

Câu trả lời:


21

Bạn có một vài vấn đề trong tuyên bố sửa đổi của bạn.

  • Sử dụng không nhất quán các trích dẫn xung quanh "in progress'
  • Bạn không cần trích dẫn xung quanh tên cột.
  • Bạn đang sử dụng "ELSEIF" khi nó phải là "KHI NÀO".

Sau đây sẽ giải quyết cả ba vấn đề và hoạt động cho tôi trong 1.8.0:

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

2
"Bạn không cần trích dẫn xung quanh tên cột." Bạn không nhưng tôi vẫn muốn giới thiệu nó vì nó sẽ giúp cú pháp đánh dấu đánh dấu phần đó dưới dạng một cột.
Nathan W

@NathanW - Công cụ tô sáng cú pháp đánh dấu tên cột màu đỏ cho dù bạn có sử dụng dấu ngoặc kép hay không, ít nhất là trong cài đặt 1.8.0 của tôi.
GIS-Jonathan

1
Nó thực sự. Điều đó khá là xấu hổ, đáng lẽ tôi phải biết điều đó khi tôi viết công cụ tô sáng;)
Nathan W

@NathanW - Có thể hiểu được. Tôi chỉ có thể nhớ những gì tôi đã viết ngày hôm qua sau khi tất cả. ;-)
GIS-Jonathan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.