我在Postgres(帶PostGIS)中有一個表,其中有幾千行,每行都有名稱(文本),代碼(文本),城市(文本)和統計區域單位(如縣)的幾何(幾何)。幾何圖形鑲嵌完美。SQL:如何替換衝突類型聯合中的值
我試圖寫一個單一的查詢,將選擇符合某些條件的所有行,並將其餘的集合到一行中。對於那一行,我對名字和代碼不感興趣,只是聚合的幾何。例如,像這樣:
code | name | geom
------+--------------------+---------
102 | Central Coast | geo...
115 | Sydney - Baulkham | geo...
116 | Sydney - Blacktown | geo...
117 | Sydney - City | geo...
118 | Sydney - Eastern | geo...
000 | Remaining Counties | geo... <---Second SELECT just to get this row
我用this answer拿出如下:
SELECT code, name, ST_Force2D(geom) FROM mytable WHERE mytable.city = 'Greater Sydney' UNION
SELECT
CASE WHEN count(code) > 0 THEN '0' ELSE 'x' END AS code,
CASE WHEN count(name) > 0 THEN 'Rest of Sydney' ELSE 'x' END AS name,
ST_Collect(geom)
FROM mytable WHERE mytable.city <> 'Greater Sydney';
這似乎是完成某事很簡單的一個真正的迂迴和不明確的方式。有一個更好的方法嗎?