前面要澄清:我说的是联合几何,而不是SQL关键字UNION
。
我正在尝试将Postgres中的一些空间数据与PostGIS一起移动到SQL Server 2008.在我看到这样的声明之前,这很好:
SELECT GeomUnion(the_geom) FROM some_table
这个联合该列中的所有几何体并将其作为一个结果返回(类似于COUNT
的工作方式)。据我所知,SQL Server只有STUnion
函数,它将一个几何与另一个几何结合在一起。有什么方法可以做类似于Postgres的方式吗?
如果有帮助,STUnion
函数的工作方式如下:
SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table
答案 0 :(得分:10)
UnionAggregate函数仅限SQL2012吗?
SELECT geography::UnionAggregate( geometry ) FROM some_table
嗯这么说。 http://technet.microsoft.com/en-us/library/ff929095.aspx
答案 1 :(得分:9)
我最终这样做的方式是使用变量:
DECLARE @Shape GEOMETRY
SET @Shape = GEOMETRY::STGeomFromText('GEOMETRYCOLLECTION EMPTY', @MySrid)
SELECT @Shape = @Shape.STUnion(Shape)
FROM MyShapeTable
它不是很好,但它确实有效。
答案 2 :(得分:5)
您最好的选择是创建一个CLR函数来支持聚合。有几个现有的解决方案: