Я написал функцию для вычисления расстояния между 2 точками с учетом максимального радиуса. Функция работает, но ее нужно вызвать дважды, так как я ее реализовал:Оптимизация запроса функции расстояния - SQL Server 2005
Как только вы выберите блок, а затем снова в блоке where.
Есть ли лучший способ достичь этого?
Спасибо за помощь!
select
c.LABEL_NAME,
k.*,
dbo.kiw_GetNearMeetingLocationInMiles_FUNC(41.056466,-85.3312009,LATITUDE,LONGITUDE) as distance
from USR_KIW_CUS_MEETING as k
join CUSTOMER as c
on c.MASTER_CUSTOMER_ID = k.MASTER_CUSTOMER_ID
where c.USR_MEMBERSHIP_STATUS_CODE NOT IN('CR','CSD')
and dbo.kiw_GetNearMeetingLocationInMiles_FUNC(41.056466,-85.3312009,LATITUDE,LONGITUDE) <= 120;
UPDATE
Это работает, на основе предложения от Матье Rodic
SELECT
*
FROM
(
SELECT
c.LABEL_NAME,
k.*,
dbo.kiw_GetNearMeetingLocationInMiles_FUNC(41.056466,-85.3312009,LATITUDE,LONGITUDE) as distance
FROM
USR_KIW_CUS_MEETING as k
JOIN
CUSTOMER as c on c.MASTER_CUSTOMER_ID = k.MASTER_CUSTOMER_ID
WHERE
c.USR_MEMBERSHIP_STATUS_CODE NOT IN('CR','CSD')
)a
WHERE
a.distance <= 120
'с (запрос минус последняя строка), как withDistance select * from withDistance, где расстояние <= 120;' См. Http://msdn.microsoft.com/en-us/library/ms175972.aspx – Patashu