Oracle中以下Sql Server查询的等效项是什么:

select dd.dname, e.ename
from emp e
outer apply
(select top 1 dname from dept d where d.did=e.did order by bdate) dd

请注意,实际查询有很大不同,但概念相同。请原谅我以上查询中的任何语法错误。

我在下面的Oracle查询中尝试过:
select dd.dname, e.ename
from emp e
left join
(select * from
(select dname from dept d where d.did=e.did order by bdate)
where rownum=1) dd

但是,它给出以下错误:
Error at Command Line:6 Column:18
Error report:
SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:
*Action:

最佳答案

您可以先排列行,然后再排列第一行:

select e.ename, d.dname
  from emp e
  left join  (
      select dept.dname, dept.did, row_number()
         over (partition by did order by bdate) rn from dept) d
    on e.did = d.did and d.rn=1

SQLFiddle

关于sql-server - 迁移SQL Server将查询应用于Oracle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30801387/

10-12 15:41