Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> How do I use ROWNUM in a subquery (emulating SQL Server TOP n)
As most of you might now, the common way of emulating SQL Servers TOP
n is to use ROWNUM
SELECT TOP 1 fld1 FROM tbl ORDERBY fld1;
becomes
SELECT * FROM (SELECT fld1 FROM tbl ORDER BY fld1) WHERE ROWNUM <= 1;
BUT, how can I do it in a sub query? I am migrating from SQL Server 2000 to Oracle 9.2, using ORACLE Migration Workbench version 10. The Original SQL Server query was:
WHERE e.id = ebr.employeeId AND ebr.id = epo.employeeBenefitRecordId AND ebr.benefitGroupId = bg.id
FROM EmployeeBenefitRecord ebr2 WHERE ebr2.employeeId = e.id AND ebr2.status IN ('P', 'L', 'I') ORDER BY ebr2.startDate DESC ) )
And the Workbench migrated that to:
WHERE e.id = ebr.employeeId AND ebr.id = epo.employeeBenefitRecordId AND ebr.benefitGroupId = bg.id
SELECT * FROM ( SELECT ebr2.id FROM EmployeeBenefitRecord ebr2 WHERE ebr2.employeeId = e.id AND ebr2.status IN ('P', 'L', 'I') ORDER BY ebr2.startDate DESC ) WHERE ROWNUM <= 1 ));
But this is not working since it is not possible to refer to e.id in the nested select statement. Does someone have a general workaround for this?
Thanks a lot
/Gosta
Received on Fri Nov 26 2004 - 04:04:03 CST
![]() |
![]() |