órmula @Haversine usando o SQL server para encontrar o local mais próximo - vb.net

Estou pegando um código postal de um formulário. Em seguida, posso converter esse código postal em coordenadas lng e lat, como as tenho armazenadas em uma tabel

SELECT lng, lat from postcodeLngLat WHERE postcode = 'CV1'

Tenho outra tabela que armazena o lng, o lat de uma seleção de locai

SELECT v.lat, v.lng, v.name, p.lat, p.lng, p.postcode, 'HAVERSINE' AS distance FROM venuepostcodes v, postcodeLngLat p WHERE p.outcode = 'CB6' ORDER BY distance

O que estou tentando fazer é criar um datagrid que mostre a distância de cada local a partir do código postal (neste caso, o CV1). Eu sei que a fórmula Haversine deve fazer o que estou tentando alcançar, mas estou perdida quanto ao local em que devo começar a incorporá-la na minha consulta. Eu acho que a fórmula precisa ir onde eu coloquei'HAVERSINE' na consulta acima.

Alguma ideia

EDITA

SELECT o.outcode AS lead_postcode, v.venue_name, 6371.0E * ( 2.0E *asin(case when 1.0E < (sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-(RADIANS(CAST(v.lat AS FLOAT))))/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT))) * cos(RADIANS(CAST(o.lat AS FLOAT))) * square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-(RADIANS(CAST(v.lng AS FLOAT))))/2.0E))))) then 1.0E else (sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-(RADIANS(CAST(v.lat AS FLOAT))))/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT))) * cos(RADIANS(CAST(o.lat AS FLOAT))) * square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-(RADIANS(CAST(v.lng AS FLOAT))))/2.0E))))) end )) AS distance FROM venuepostcodes v, outcodepostcodes o WHERE o.outcode = 'CB6' ORDER BY distance

questionAnswers(2)

yourAnswerToTheQuestion