我在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';
这似乎是完成某事很简单的一个真正的迂回和不明确的方式。有一个更好的方法吗?