我有一个ORDER_STATUS表所示:如何编写查询来根据条件检查另一个表?
order_id order_status
1 100
2 1000
3 1000
我有存储历史数据,以便另一个表order_status_history:
id order_id order_status status_date
1 1 100 2016-01-01
2 2 100 2016-02-01
3 2 300 2016-04-01
4 3 100 2016-04-01
5 3 400 2016-04-01
6 3 1000 2016-04-01
7 2 1000 2016-05-01
我想建立一个每日报告,对于给定的日期,我想看看订单是否已完成或正在进行。我对SQL很不好,不知道如何去做。如果某个日期的订单状态为< 1000,则表示正在进行,否则结束。
例如:对于日期2016年4月1日,该报告将是:
order_id status
1 in-progress (because as of report date, its latest status is 100)
2 in-progress (because as of report date, its latest status is 300)
3 completed (because as of report date, its latest status is 1000)
我试图像下面的尝试正在进行的订单至少找到的东西:
select distinct s.order_id, s.order_status
from order_status
left join order_status_history h on h.order_id = s.order_id
where max(h.status_date) <'2016-04-01'
and status < 1000
任何非常感谢帮助!
order_status表中的当前状态是否也在历史表上? – Shadow
'order_status'表格并没有什么意义。 –