[英]t-SQL: Use a variable to filter result set
原諒我的天真。
我有一個查詢,可以讓您找到球體上兩個點之間的距離,在這種情況下,可以找到郵政編碼之間的距離。
SELECT TOP 5 zip, city, state, latitude, longitude,
69.0 * DEGREES(ACOS(COS(RADIANS(latpoint))
* COS(RADIANS(latitude))
* COS(RADIANS(longpoint) - RADIANS(longitude))
+ SIN(RADIANS(latpoint))
* SIN(RADIANS(latitude)))) AS distance_in_miles
FROM us_loc_data
JOIN (
SELECT 39.317974 AS latpoint, -94.57545 AS longpoint
) AS p ON 1=1
ORDER BY distance_in_miles
從聯接中可以看到,通過指定一對坐標作為“起點”來過濾結果集,然后返回最靠近的5個位置的列表。 (下面的示例)
最終,我想通過指定一個起始郵政編碼而不是一對坐標來過濾結果。 如何實現變量呢? 什么是最佳做法?
未經測試,但是您可以簡單地更改子查詢以通過郵政編碼提取緯度/經度。
Declare @Zip varchar(10) = '02806'
SELECT TOP 5 zip, city, state, latitude, longitude,
69.0 * DEGREES(ACOS(COS(RADIANS(latpoint))
* COS(RADIANS(latitude))
* COS(RADIANS(longpoint) - RADIANS(longitude))
+ SIN(RADIANS(latpoint))
* SIN(RADIANS(latitude)))) AS distance_in_miles
FROM us_loc_data
JOIN (
SELECT latitude AS latpoint
, longitude AS longpoint
From us_loc_data
Where Zip = @Zip
) AS p ON 1=1
ORDER BY distance_in_miles
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.