【发布时间】:2020-05-07 12:56:56
【问题描述】:
我正在尝试在 Oracle(Oracle Database 11g 版本 11.2.0.1.0)中使用 Lateral Join,但它给出了一些错误.我已经关注了这个链接
https://oracle-base.com/articles/12c/lateral-inline-views-cross-apply-and-outer-apply-joins-12cr1#lateral-inline-views 并将其应用于相同的数据,但仍然无法正常工作。有人能解决这个问题吗?
SELECT department_name, employee_name
FROM departments d,
LATERAL(SELECT employee_name FROM employees e WHERE e.department_id = d.department_id)
ORDER BY 1, 2;
添加更多详细信息以阐明我需要横向连接的原因: 我有一张桌子,例如
ID Length
1 20
2 50
3 30
4 40
5 20
6 80
我想添加 ID 小于当前行 ID 的记录长度总和的另一列,即
ID Length Sum
1 20 NULL
2 50 20
3 30 70
4 40 100
5 20 140
6 80 160
例如,使用横向连接可能非常简单
select A.ID,A.length,Sum from Table A,
Lateral (select sum(B.length) as Sum from Table B where B.id<A.id);
那么有什么替代方法吗?
【问题讨论】:
-
您运行的是哪个版本的 Oracle?
-
Oracle 数据库 11g 版本 11.2.0.1.0 - 64 位生产
-
URL 中提到了它是 12c 的新特性这一事实(两次),文章标题 "LATERAL Inline Views, CROSS APPLY and OUTER APPLY Joins in Oracle Database 12c Release 1 (12.1 )”,第一段:“Oracle 12c 引入了 LATERAL 内联视图语法”。会不会是这个问题?
标签: sql oracle join oracle11g lateral-join