2017-05-19 8 views
0

誰でもこのエラーが発生している理由を説明していただけますか、私は間違っています。ORA-00904: "RN":無効な識別子

SELECT a.*, row_number() over (partition by code_employee order by 
to_date(substr(last_located_time,1,10),'yyyy-mm-dd')) rn 
FROM 
    (SELECT LAST_LOCATED_TIME, NAME_COMMON, CODE_EMPLOYEE 
FROM 
    daily_report 

WHERE INSERT_DATE = TRUNC (SYSDATE-3) AND DEVICE_NAME LIKE '%SM-T116IR')a 
WHERE rn=1; 
+1

あなたは 'WHERE'句で列の別名を使用することはできません。 –

+0

http://stackoverflow.com/questions/3451534/how-do-i-do-top-1-in-oracle –

答えて

1

、このいずれかを試してください。

select * 
    from (select a.*, 
       row_number() over(order by to_date(last_located_time, 'dd.mm.rrrr')) rn 
      from (select last_located_time, name_common, code_employee 
        from daily_report     
       where insert_date = trunc(sysdate-3) and device_name like '%SM-T116IR') a) 
where rn = 1 
+0

入力のためのOzhanありがとう。私が理解しようとしているように誰かがこのクエリを私に説明することができますか?誰かによって書かれたコード.... 'row_number()以上(to_date(substr(last_located_time、1,10)、 'yyyy-mm-dd'))))' –

+0

あなたは幼児を歓迎します。ちなみに、 "order by"句には "substr(to_char(nd_sonokuma、 'yyyy-mm-dd')、1,10)を使うのがよいでしょう。ご存知のように、 "substr"は日付ではなく文字列に適用する必要があります。 –

+0

ozhanしかし、男は 'substr'を' nvarchar2'列に使って、それを 'to_date'に変換しました。これは日付として使用していないので意味が分かりません。 –