2016-10-24 9 views
0

です。現時点では、ORA-00923に対応しているsighting_id値と共に最大のsighting_distanceを取得したいと思っています。 :FROMキーワードが見つかりませんでした。任意のアイデアはどのようにこのエラーを修正するには?エラーメッセージ:ORA-00923:FROMキーワードが見つかりませんでした。

SELECT TOP 1 SIGHTING_ID, sqrt(((-28 - LATITUDE)*(-28 - LATITUDE)) + ((151 - LONGITUDE)*(151 - LONGITUDE))) AS "SIGHTING_DISTANCE" 
FROM(
    SELECT SIGHTING_ID, longitude, latitude 
    FROM SIGHTINGS) 
GROUP BY SIGHTING_DISTANCE 
ORDER BY ASC; 
+2

TOPはOracle –

+1

...および 'ORDER BY ASC'ではありませんか? – sstan

答えて

1

オラクルにはTOPのキーワードはありません。代わりに、ROWNUMを使用してください:

SELECT * 
FROM 
(
    SELECT SIGHTING_ID, 
      SQRT(((-28 - LATITUDE)*(-28 - LATITUDE)) + ((151 - LONGITUDE)*(151 - LONGITUDE))) AS "SIGHTING_DISTANCE" 
    FROM SIGHTINGS 
    ORDER BY "SIGHTING_DISTANCE" DESC 
) 
WHERE ROWNUM = 1 

また、他のいくつかの問題をあなたのクエリで修正しました。 GROUP BY最大距離を取得する必要はありません。いずれの場合も、集計されていない列である目撃IDを選択していました。また、元のサブクエリは必要ありません。

0

は、Oracle SQLに存在しませんTOP 1を選択します。サブクエリ内のすべてを選択し、サブクエリを並べ替えてから、「ROWMUM = 1」のすべてを再度選択します。 (これには他にも多くの方法があります.Oracle 12の場合は、「TOP 1」に似た新機能があります)

+0

ありがとう!それはエラーに解決しましたが、上記の実装は、sighting_distanceの無効な識別子、それを引き起こしている他のヒントを教えてくれましたか? –

+0

SIGHTING_IDが選択されていますが、GROUP BYにSIGHTING_DISTANCEがあるからです。 –

0

TOPの代わりにWHERE ROWNUM = 1を使用してください。

関連する問題