我有一张带有纬度/经度的邮政编码表。不幸的是,它似乎没有几个邮政编码。我想尝试根据至少在该地区的其他邮政编码来估算纬度/经度。
因此,对于不在我的数据库中的邮政编码 52733,我正在考虑采用“LIKE 5273%”的所有其他邮政编码的平均纬度。
select ZipCode as z,
(select AVG(Latitude)
from tlkp_ZipCodes
where ZipCode like LEFT(z, 4) + '%' )
from tlkp_ZipCodes
但这似乎不起作用。它说“z”是无效的列名。我该怎么做呢?
您似乎想在标量子查询的 OUTER 查询中引用 ZipCode。您不能引用别名
z
,因为它只是在同一个 SELECT 子句中定义的。执行此操作的正确方法是仅使用基列,但对表进行不同的别名,以在列名前加上别名。如果您的 DBMS 支持窗口函数,您也可以使用它:
在SQL-Fiddle中测试