我认为你的解决方案没问题. Oracle的唯一其他解决方案是使用row_number()分析函数,但这使它不那么优雅.其他数据库具有TOP 1语句,但是当您使用ORDER BY时,在子查询之外没有其他Oracle等效于ROWNUM.我同意使用WITH使其更具可读性.以下可能写得更快,但我不确定它是否更优雅.也许是品味问题:
SELECT * FROM
( SELECT WKFC_CRONOLOGIA_ID
FROM SIUWKF.WKF_CRONOLOGIA c
WHERE Ogg_oggetto_id = vOGG_ID
AND TOG_TIPO_OGGETTO_ID = vTOG
AND C.WKFC_DATA_FIN = TO_DATE ('31/12/9999', 'DD/MM/YYYY')
AND Wkfc_Tipo = 'STATO'
ORDER BY WKFC_DATA_INI DESC)
WHERE ROWNUM = 1
这就是Oracle SQL手册中关于ROWNUM和前N个报告的内容,并确认了您的方法.
源Oracle®数据库SQL语言参考11g第2版(11.2)E26088-01