2011-12-29 1 views
-2

작업 테이블에서 합당한 오차를 가진 팀과 고객의 위도와 경도를 어떻게 제어 할 수 있습니까?T-SQL에서 거대한 원 거리 계산을 사용하는 방법

두 값이 서로 가까이있는 경우 나는 "false"를하지 않을 경우, "사실"(이 같은)

작업 표를 반환합니다

JobID CustomerID TeamID 
    2  13  1 
    3  13  2 

팀 테이블 :

TeamID Latitude Longitude 
1  41.019 28.965 
2  42.019 27.165 

고객 표

ID Latitude Longitude 
13 13.557 13.667 
+0

가? 좀 더 구체적으로해야 "서로에 가까운"될 – Lamak

+0

가능한 중복 http://stackoverflow.com/questions/8667647/find-the -nearest-location-in-ms-sql –

답변

3

기능 :이 말은 무엇을

CREATE FUNCTION dbo.DictanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT) 
RETURNS FLOAT 
AS 
BEGIN 
    RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371 
END 
1

나는 여러분이 다음과 같이 가정합니다 : 두개의 위도와 경도가 서로 x 마일 이내에 있다면 select 문을 써서 참을 수 있습니까?

은 'great_circle_distance'

팀에 고객을 연결하는 쿼리를 작성을 찾아보십시오.

두 원거리와 원거리에서 큰 원 거리 계산을 수행하십시오.

원하는 거리와 비교하십시오.

은 'True'또는 'False'값으로 변환하기 위해 decode 또는 유사한 구조를 사용합니다.

관련 문제