具有空间索引错误的

时间:2015-11-16 22:07:28

标签: sql sql-server tsql sql-server-2012

所以我试图使用STIntersects和计数功能计算每个人口普查区块的出租车点数。我创建了一个点的空间索引,只查询SF湾区。当我运行我的查询时,我收到此错误:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

(0 row(s) affected)

这是我的代码:

DECLARE @POLY GEOMETRY = (SELECT GEOM FROM BayArea_Counties_PH)  
SELECT COUNT(geom) as pct 
FROM DF_Testing1 with (index(BA_Points_Index))
WHERE @POLY.STIntersects(Geom)=1
group by 
Id

我希望通过ID或其他东西进行分组,以便我可以在地图上显示每个块的强度。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我相信这是问题所在:

DECLARE @POLY GEOMETRY = (SELECT GEOM FROM BayArea_Counties_PH)

您在BayArea_Counties_PH中有多少条记录?它必须是一个正确地将GEOM分配给变量。如果您有多条记录,则应该为该行添加正确的WHERE子句。

答案 1 :(得分:0)

问题(如另一张海报所述)是您在声明@POLY时尝试为标量指定多个值。这可以做你想要的,但步骤更少:

SELECT b.id, t.id, COUNT(geom) as pct 
FROM DF_Testing1 as [t] with (index(BA_Points_Index))
join BayArea_Counties_PH as [b]
   on b.Geom.STIntersects(t.Geom) = 1
group by b.Id, t.Id;