我在SQL Server中有两个表(A和B(。我想创建一个在NameA上具有并集或溶解的视图,使用计数和几何图形的总和。
结果应该类似于:
nameC | ogr_geometry | SUM_count//tr>
---|---|
main1 | 几何 | 4
main2 | 几何 |
main3 | 几何 |
SELECT
中的非标记列必须与GROUP BY
列相同或为其子集。由于Geometry类型不可比较,因此不能在GROUP BY
列之间。分两步完成
SELECT ta.*, TableB.ogr_geometry
FROM (
SELECT nameA, SUM(Count) AS SUM_count
FROM TableA
GROUP BY nameA ) ta
INNER JOIN tableB ON ta.nameA = tableB.nameB
需要对ogr_geometry
列应用聚合。由于它不是GROUP BY列之一,SQL正试图以某种方式跨组聚合它。
如果ogr_geometry
是可比的,那么你可以这样做:
SELECT tableA.nameA
, SUM(count) AS count
, MIN(tableB.ogr_geometry) AS geometry
FROM tableA
INNER JOIN tableB ON tableA.nameA=tableB.nameB
GROUP by tableA.nameA
如果不是,因为ogr_geometry
实际上是一种几何体类型,您将需要首先在表a上进行聚合,然后与表B:连接
SELECT tableA.nameA
, tableB.ogr_geometry
, tableA.count
FROM (
SELECT nameA
, SUM(count) AS count
FROM tableA
GROUP BY nameA
) tableA
INNER JOIN tableB ON tableA.nameA=tableB.nameB