2014-07-17 2 views
1

Я хочу рассчитать расстояние между двумя лат-длинными и отобразить это значение. Я также хочу, чтобы использовать это значение (округленный до ближайшего КМ)Использование вычисленного значения в двух местах в postgresql-запросе

ПРИМЕЧАНИЕ: надуманный пример

Вот что я

SELECT 
ST_Distance(
    ST_GeogFromText(
    'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
    ), 
    ST_GeogFromText('SRID=4326;POINT(1 1)') 
) AS distance, id from locations limit 10 

Теперь это работает отлично .. я получаю расстояние в метрах

Но я хочу, чтобы получить расстояние в метрах и км (на этот вопрос, который достаточно прост)

Вот что я считавшаяся

SELECT 
ST_Distance(
    ST_GeogFromText(
    'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
    ), 
    ST_GeogFromText('SRID=4326;POINT(1 1)') 
) AS distance, distance/1000 as distance_in_km, id from locations limit 10 

Это возвращает ошибку ..
колонка «расстояние» не существует
имеет стрелку, указывающую на второй «расстояние» в запросе на.

То, что я бы очень хотел, чтобы избежать оказывает расчет как в полной стоимости и округленный до KM

Пожалуйста, обратите внимание: Это не фактический запрос, но один, который ухитрился представить этот вопрос.

ответ

2

попробовать это: -

SELECT distance, distance/1000 as distance_in_km from 
(
    SELECT 
     ST_Distance(
      ST_GeogFromText(
      'SRID=4326;POINT(' || longitude || ' ' || latitude || ')' 
     ), 
     ST_GeogFromText('SRID=4326;POINT(1 1)') 
    ) AS distance, id from locations limit 10 
) t; 
+0

+1 спасибо .. Это действительно помогает. – baash05

+0

Теперь я должен выяснить, как изменить предложение from активного вызова записи. – baash05

Смежные вопросы