原ORACLE语句:
select * from (select BEGINDATE,BEGINTIME from uf_PROJECT_CTMAIN where ennmcd=7632 and INSPECT_TYPE = '巡查'
and ceil((To_date(endtime , 'hh24-mi-ss') - To_date(begintime , 'hh24-mi-ss')) * 24 * 60 )>=5
order by BEGINDATE desc, BEGINTIME desc) where rownum<=1 order by rownum asc
迁移到瀚高数据库后,发现条数限制变得无效,因为瀚高没有rownum关键字,虽然不报错,但是也不会执行。研究后发现瀚高的条数是用row_number()的:
SELECT ROW_NUMBER() OVER(PARTITION BY DTYPE,STCD ORDER BY DT DESC,TM DESC) rn,t.* FROM t WHERE rn = 1
改造后如下:
select * from (
select BEGINDATE,BEGINTIME , ROW_NUMBER() OVER(PARTITION BY ennmcd ORDER BY BEGINDATE DESC,BEGINTIME DESC) rn
from uf_PROJECT_CTMAIN where ennmcd=7632 and INSPECT_TYPE = '巡查'
and ceil((To_date(endtime , 'hh24-mi-ss') - To_date(begintime , 'hh24-mi-ss')) * 24 * 60 )>=5
) where rn=1
成功