У меня есть процедура вычисления географического расстояния в SQL Server, но в ней есть псевдоним столбца и не может работать свойство сортировки true;
DECLARE
@GEO1 GEOGRAPHY,
@LAT VARCHAR(10),
@LONG VARCHAR(10)
SET @LAT = '41.000000'
SET @LONG = '30.000000'
SET @geo1 = geography::Point(@LAT, @LONG, 4326)
SELECT
LOC_ID, LOC_NAME,
LEFT(CONVERT(VARCHAR, (@geo1.STDistance(geography::Point(ISNULL(LAT,0), ISNULL(LONG, 0), 4326))) / 1000), 4) AS DISTANCE
FROM
Konum
WHERE
(@geo1.STDistance(geography::Point(ISNULL(LAT,0), ISNULL(LONG,0), 4326))) / 1000 < 10
Я попытался
DECLARE
@GEO1 GEOGRAPHY,
@LAT VARCHAR(10),
@LONG VARCHAR(10)
SET @LAT = '41.329867'
SET @LONG = '36.264149'
SET @geo1= geography::Point(@LAT, @LONG, 4326)
SELECT
LOC_ID, LOC_NAME,
LEFT(CONVERT(VARCHAR, (@geo1.STDistance(geography::Point(ISNULL(LAT, 0), ISNULL(LONG, 0), 4326))) / 1000), 4) AS DISTANCE
FROM
Konum
WHERE
(@geo1.STDistance(geography::Point(ISNULL(LAT, 0), ISNULL(LONG, 0), 4326))) / 1000 < 30
ORDER BY
DISTANCE ASC -- <=
Но вернул псевдоним varcharcolumn
1.2
1.3
11.5 <= Not like
2.8
9.7
Я пытался:
CAST(DISTANCE AS INT)
Но SMSS выдает ошибку "недопустимое имя столбца" DISTANCE "", потому что это псевдоним столбца.
Какрешить эту проблему?