sql-server - 将 SQL Server Apply 查询迁移到 Oracle

标签 sql-server oracle

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:

最佳答案

加入后缺少 On 子句。因此,我按查询将查询转换为组,它起作用了:

select dd.dname, e.ename
from emp e
left join 
(select min(bdate), dname, did from dept d group by dname, did)dd
on dd.did=e.did

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

相关文章:

sql - 这个过程如何在不引用传递的参数值的情况下执行工作?

java - 用户登录JDBC后屏蔽用户名

'order by' 不确定时的 SQL 分页

c# - 在 IDE 上运行与通过 .exe 运行

java - Microsoft Sql Server 未使用 java 获取具有Where Condition 的记录

java - 从 Java 中的存储过程 (sql) 检索数据

SQL 查询比较 2 个搜索结果之间的列

sql-server - master.dbo.xp_sqlagent_enum_jobs - 如何获取上次运行结果

sql - Oracle 中的 SELECT 和 CREATE 均不排序

oracle - 将德语特殊字符转换为 Oracle SQL/PL-SQL 中的英语等效字符