我有2个表:Orders和order_line
在订单中我有以下数据:
rm -rf node_modules && npm cache clean && npm install
在有序线上有以下数据:
id | name | order_date
1 | order 1| 2014-01-01
2 | order 2| 2015-01-01
3 | order 3| 2016-01-01
订单行确实有日期和状态
现在我想知道在给定的月/年中有多少行具有给定状态。 例如,我预计2014 - 08年的状态为“新”,值为1,2016 - 03年的“已取消”值为2。 要报告这一点,我需要以某种方式获取每个订单的最新order_line行,并报告。如果我只有一个订单,我可以得到这样的最新订单:
id | Order_id | order_status |status_date
1 | 1 | New | 2014-01-01
2 | 1 | Shipped | 2014-10-01
3 | 2 | New | 2015-01-01
4 | 2 | Canceled | 2015-03-01
5 | 3 | New | 2016-01-01
6 | 3 | Canceled | 2016-02-01
我想以某种方式将子查询链接到我猜的父查询,但我无法弄清楚如何做到这一点。当我尝试用“where order_id = o.id”替换子查询中的1时,我得到错误代码:1054。'where子句'中的未知列'o.id'
创建/填充样本表的代码:
select orderline.* from orders o
join (select * from orderline
where order_id = 1
and status_date = (select max(status_date)
from orderline
where order_id = 1
and status_date < MAKEDATE(2018, 8))) as orderline on orderline.order_id = o.id
where o.id = 1;
答案 0 :(得分:2)
我想你想要这样的东西:
select ol.order_status, count(*)
from orderline ol
where ol.status_date = (select max(ol2.status_date)
from orderline ol
where ol2.order_id = ol.order_id and
ol2.status_date < '2014-08-01'
)
group by ol.order_status;
这将返回具有特定日期(子查询中的日期)的给定状态的订单行数。