创建视图并对列值求和



我在SQL Server中有两个表(A和B(。我想创建一个在NameA上具有并集或溶解的视图,使用计数和几何图形的总和。

结果应该类似于:

SUM_count//tr>4
nameC ogr_geometry
main1 几何
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

最新更新