に、私は以下のコードに次のエラーを持っている*でパーティションを使用して選択することはできません:は同じクエリ
SELECT *, MAX(Salary)
OVER (PARTITION BY ID_DEPT ORDER BY Salary DESC) R
FROM SG_EMPLOYEES;
が、私はとアスタリスクを変更する「を期待どこキーワードFROM が見つかりません」各列の名前はすべて正常に動作します。だから私はこれの背後にある理由を理解したい。
に、私は以下のコードに次のエラーを持っている*でパーティションを使用して選択することはできません:は同じクエリ
SELECT *, MAX(Salary)
OVER (PARTITION BY ID_DEPT ORDER BY Salary DESC) R
FROM SG_EMPLOYEES;
が、私はとアスタリスクを変更する「を期待どこキーワードFROM が見つかりません」各列の名前はすべて正常に動作します。だから私はこれの背後にある理由を理解したい。
Oracleで*
を使用する場合、他の式が選択されている場合は、修飾する必要があります。したがって:
SELECT e.*,
MAX(e.Salary) OVER (PARTITION BY e.ID_DEPT ORDER BY e.Salary DESC) as R
FROM SG_EMPLOYEES e;
私はすべての列名を修飾するのが大好きです。
ご質問は実際には非常に奇妙に思えます。あなたがORDER BY
句必要はありません。
SELECT e.*,
MAX(e.Salary) OVER (PARTITION BY e.ID_DEPT) as R
FROM SG_EMPLOYEES e;
をお使いのバージョンでは、累積最大値を取った後、最高から最低までの給与を注文された - ので、累計では、全体の最大と同じです。
ありがとう!分析関数のエイリアスが、アスタリスクの選択を呼び出すときに考慮されているため、結果がエラーになることはわかりませんでした。 –
答えはありませんが、ORDER BYの存在はこの文脈ではあまり意味がありません。 –
'*'の代わりに 'SG_EMPLOYEES。*'を試してください –
はい。とった。ありがとうございました! –