簡體   English   中英

t-SQL:使用變量過濾結果集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM