MySQL报告-订单历史记录
我必须为报表创建一个MySQL查询 我有一个表MySQL报告-订单历史记录,mysql,reporting,Mysql,Reporting,我必须为报表创建一个MySQL查询 我有一个表history,用于记录产品订单的状态变化。我有订单生命周期(订单流程)的这些状态:新的、确认的、处理的、发货的、交付的、取消的、退回的。订单不一定遵循此状态流,例如:新订单可以立即取消,也可以在处理过程中取消。这使得准确的报告更加复杂 现在,我想做一份订单的供应链报告,这些订单经过确认、处理、装运和交付。但此报告应排除在任何阶段取消或退回的订单 考虑这个例子: 客户下了一个订单(id:34)。初始状态:新。已由代理确认,状态设置为已确认。供应链经理
history
,用于记录产品订单的状态变化。我有订单生命周期(订单流程)的这些状态:新的、确认的、处理的、发货的、交付的、取消的、退回的。订单不一定遵循此状态流,例如:新订单可以立即取消,也可以在处理过程中取消。这使得准确的报告更加复杂
现在,我想做一份订单的供应链报告,这些订单经过确认、处理、装运和交付。但此报告应排除在任何阶段取消或退回的订单
考虑这个例子:
客户下了一个订单(id:34)。初始状态:新。已由代理确认,状态设置为已确认。供应链经理验证可用性、加工状态更改、装运和交付
另一个订单(id:55)来了,新的,已确认的,正在处理但已取消<代码>历史记录看起来像:
id order_id status
111 34 new
112 34 confirmed
113 55 new
114 55 confirmed
115 55 processing
116 34 processing
117 55 cancelled
118 34 shipped
119 34 delivered
如何进行报告查询以仅获取已提交的订单
如何编写查询以获取这些类型的报告?对于新订单:选择distinct(order\u id)from history,其中status=new 对于新处理:从历史记录中选择distinct(order_id),其中状态=已处理 等等 对于新订单、已处理订单和已交付订单 从历史记录中选择t1.order\u id作为t1,历史记录作为t2,历史记录作为t3,其中t1.order\u id=t2.order\u id和t2.order\u id=t3.order\u id和t1.status=new和t2.status=processed和t3.status=delived
像这样对别人说下去太好了。如果我也把时间放在
WHERE
子句中会怎么样。如t3.date\u added>t2.date\u added和t2.date\u added>t1.date\u added
。这意味着,订单首先是新的,然后设置为流程,然后交付。这样我也可以对状态流进行排序。。。对吧?是的,你能做到。如果答案是有帮助的,不要忘记接受它。谢谢