SQL> SELECT sighting_id, distance
FROM sightings
WHERE distance = SQRT(POWER(latitude -(-28),2) + POWER(longitude -(151),2))
GROUP BY sighting_id, distance;
接收错误PLS-306:调用' OGC_DISTANCE'时参数的数量或类型错误。有什么想法吗?
Name Null? Type
-------------- -------- --------------------------------
SIGHTING_ID NOT NULL NUMBER
SPOTTER_ID NUMBER
BIRD_ID NUMBER
LATITUDE NUMBER
LONGITUDE NUMBER
SIGHTING_DATE DATE
DESCRIPTION VARCHAR2(255)
答案 0 :(得分:1)
尝试使用其他名称来“距离”#39;列,看起来它是一些内部GEO函数或已在Oracle DB中定义的同义词。还请检查表中的所有纬度和经度值是否为有效数字,而不是空等。
您可能需要为null纬度和经度出现添加一些coalesce()包装,或者添加" AND纬度IS NOT NULL和经度IS NOT NULL"进入WHERE子句。
答案 1 :(得分:0)
问题在于您的表中没有列距离。据我了解你想做的事情:
SELECT sighting_id, SQRT(POWER(latitude -(-28),2) + POWER(longitude -(151),2)) as distance
FROM sightings
GROUP BY sighting_id, SQRT(POWER(latitude -(-28),2) + POWER(longitude -(151),2));