【发布时间】:2018-06-21 18:12:48
【问题描述】:
我的数据库有客户和订单。客户可能有许多具有不同主键和创建日期的订单。
我想为客户创建一个视图,其中包含每个客户加入他们的最新订单(如果客户没有任何订单,则为 null)。
我尝试了以下
SELECT [...], c.customer_id, o.order_id
FROM customers c
LEFT OUTER JOIN [...]
LEFT OUTER JOIN [...]
[...]
LEFT OUTER JOIN orders o ON (
o.customer_id = c.customer_id
AND o.create_dt = (
SELECT MAX(create_dt) FROM orders o2 WHERE o2.customer_id = c.customer_id
)
);
但我收到以下错误
列不能外联到子查询
我发现 Oracle 不支持外连接中的子查询。实现此视图的正确方法是什么?请注意,此示例已简化,对语句的必要更改应该只影响特定的连接,因为还有多个其他连接和条件正在进行,为简单起见,此处未显示。
【问题讨论】:
标签: sql oracle join greatest-n-per-group