2016-10-19 44 views
-1

oracle不断拒绝任何我在with子句中尝试调用经度的东西。定义变量,无效标识符。欧几里得距离

WITH params as (
     SELECT -28 as lat, 151 as lon 
     FROM dual 
    ) 
SELECT sighting_id 
FROM sightings 
ORDER BY sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)); 
+0

向我们展示您的数据库架构。请阅读[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),了解如何提高您的问题质量并获得更好的答案。 –

回答

2

您在WITH中定义参数,但从不在FROM中引用它。

WITH params as (
     SELECT -28 as lat, 151 as lon 
     FROM dual 
    ) 
SELECT sighting_id 
FROM sightings CROSS JOIN params 
ORDER BY sqrt(power(lat - latitude, 2) + power(lon - longitude, 2));