2017-05-29 64 views
0

我想寫case語句中使用如下Postgres的區域相交點:ST_Intersect返回一個double結果

SELECT Point.id, Point.geom, Box.Postcode, 
CASE 
    WHEN ST_Intersects(Box.geom, Point.geom) AND Box.postcode = 'A' THEN 'A' 
    WHEN ST_Intersects(Box.geom, Point.geom) AND Box.postcode = 'B' THEN 'B' 
    WHEN ST_Intersects(Box.geom, Point.geom) AND Box.postcode = 'C' THEN 'C' 
    ELSE 'No postcode' 
END AS PointPostcode 

的想法是,每一個位於箱內點將會有一個新的屬性列命名爲'PointPostCode'並且具有郵編信息:'A','B','C'取決於它們的位置。對於位於箱子外的點將具有「無郵政編碼」信息。

我成功運行這些查詢,我也得到了新的列作爲我想要的。位於Box內部的點也具有正確的郵政編碼信息,但同時它也被賦予了所有點的「無郵政編碼」標籤(重新加倍值)。

有人能幫我弄清楚我的查詢的錯誤在哪裏嗎?

回答

0

我相信你要執行下面的查詢:

SELECT Point.id, Point.geom, Box.Postcode, 
CASE 
    WHEN Box.postcode = 'A' THEN 'A' 
    WHEN Box.postcode = 'B' THEN 'B' 
    WHEN Box.postcode = 'C' THEN 'C' 
    ELSE 'No postcode' 
END AS PointPostcode 
WHERE ST_Intersects(Box.geom, Point.geom) 
+0

現在我明白瞭如何編寫正確的查詢,非常感謝...... – reyalino

+0

如果答案是正確的,請把它標記爲正確的 – e4c5