Como retornar colunas adicionais com valores gerados em procedimentos armazenados na 'mosca'?

StackOverflow https://stackoverflow.com/questions/1504830

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu tenho um procedimento armazenado no SQL 2005 que calcula a distância usando a fórmula de Haversine. Tudo funciona bem, mas eu gostaria de retornar a distância calculada com meu conjunto de resultados. Como faço para adicionar esse par de coluna/valor?

 DECLARE @Longitude DECIMAL(18,8),
        @Latitude DECIMAL(18,8),
        @MinLongitude DECIMAL(18,8),
        @MaxLongitude DECIMAL(18,8),
        @MinLatitude DECIMAL(18,8),
        @MaxLatitude DECIMAL(18,8),
        @WithinMiles INT

Set @Latitude = -122.25336930
Set @Longitude = 37.50002600
Set @WithinMiles = 20

-- Calculate the Max Lat/Long
SELECT @MaxLongitude = dbo.LongitudePlusDistance(@Longitude, @Latitude, @WithinMiles),
       @MaxLatitude = dbo.LatitudePlusDistance(@Latitude, @WithinMiles)

-- Calculate the min lat/long
SELECT @MinLatitude = 2 * @Latitude - @MaxLatitude,
       @MinLongitude = 2 * @Longitude - @MaxLongitude

SELECT Top 10 *
FROM   Location
WHERE  LocationLongitude Between @MinLongitude And @MaxLongitude
       And LocationLatitude Between @MinLatitude And @MaxLatitude
       And dbo.CalculateDistance(@Longitude, @Latitude, LocationLongitude, LocationLatitude) <= @WithinMiles
ORDER BY dbo.CalculateDistance(@Longitude, @Latitude, LocationLongitude, LocationLatitude)

--Return the result of dbo.CalculateDistance

Algum indicador? Incluindo a maneira correta de fazer essa pergunta?

(Ah, e sim, este não é o procedimento armazenado, pois eu estava tocando com a consulta diretamente, foi o que eu colei aqui.)

Foi útil?

Solução

Eu acho que é isso que você está pedindo

    SELECT Top 10 *,dbo.CalculateDistance(@Longitude, @Latitude, LocationLongitude, LocationLatitude) as 'Calculated Distance'
FROM   Location
WHERE  LocationLongitude Between @MinLongitude And @MaxLongitude
       And LocationLatitude Between @MinLatitude And @MaxLatitude
       And dbo.CalculateDistance(@Longitude, @Latitude, LocationLongitude, LocationLatitude) <= @WithinMiles
ORDER BY dbo.CalculateDistance(@Longitude, @Latitude, LocationLongitude, LocationLatitude)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top