【发布时间】:2014-12-31 17:38:36
【问题描述】:
我正在尝试找到一种方法来为我的查询输出添加计数:
SELECT *
FROM
(SELECT
id,
'Event Location' AS name,
venueName AS snippet,
venueLatLng AS coordinates,
(3959
* acos(cos(radians('xx.xxxxxx'))
* cos(radians(SUBSTRING(venueLatLng, 1, CHARINDEX(',', venueLatLng)-1)))
* cos(radians(SUBSTRING(venueLatLng, CHARINDEX(',', venueLatLng) + 1, 1000))
- radians('-xx.xxxxxxx'))
+ sin(radians('xx.xxxxxx'))
* sin(radians(SUBSTRING(venueLatLng, 1, CHARINDEX(',', venueLatLng)-1))))) AS distance
FROM marker) TMP
WHERE
distance < 30
ORDER BY
distance;
我尝试这样做的方式是:
SELECT *
FROM (
SELECT id,
'Event Location' AS name,
venueName AS snippet,
venueLatLng AS coordinates,
COUNT(*) AS rCount,
(3959
* acos(cos(radians('xx.xxxxxx'))
* cos(radians(SUBSTRING(venueLatLng, 1, CHARINDEX(',', venueLatLng)-1)))
* cos(radians(SUBSTRING(venueLatLng, CHARINDEX(',', venueLatLng) + 1, 1000))
- radians('-xx.xxxxxxx'))
+ sin(radians('xx.xxxxxx'))
* sin(radians(SUBSTRING(venueLatLng, 1, CHARINDEX(',', venueLatLng)-1))))) AS distance
FROM marker) TMP
WHERE distance < 30
ORDER BY distance;
错误是这样的:
选择列表中的“marker.id”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我怎样才能正确地做到这一点?
【问题讨论】:
-
(1) 您的两个查询似乎相同; (2) 假设列实际存在,两者都不会在
marker.id上产生错误。 -
id 确实存在,因为如果我取出 COUNT(*) AS rCount 部分,查询就可以工作。
标签: sql sql-server database record-count