0

我必须为报告创建一个 MySQL 查询。

我有一张history记录产品订单状态变化的表格。对于订单的生命周期(订单流程),我有以下状态:新的、已确认的、正在处理的、已发货的、已交付的、已取消的、已退货的。订单不一定遵循此状态流,例如:新订单可以立即取消,也可以在处理过程中取消。这使得准确的报告更加复杂。

现在我想对已确认、处理、发货和交付的订单制作供应链报告。但此报告应不包括在任何阶段取消或退回的订单。

考虑这个例子:

客户下了订单 (id: 34)。初始状态:新。由代理确认,状态设置为已确认。供应链经理验证可用性、处理状态的变化,然后发货,然后交付。

另一个订单 (id: 55) 来了,新的,已确认,正在处理但已取消。history好像:

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

如何进行报告查询以仅获取那些

  1. 确认、处理、发货和交付。
  2. 确认、处理、取消。
  3. 确认,取消
  4. 等等...

如何编写查询以获取此类报告?

4

1 回答 1

1

对于新订单:从历史记录中选择不同(订单ID),其中状态=新处理的新订单:从历史记录中选择不同(订单ID),其中状态=已处理,依此类推

对于那些新的、处理的和交付的订单

从历史中选择 t1.order_id 作为 t1,历史作为 t2,历史作为 t3,其中 t1.order_id=t2.order_id 和 t2.order_id=t3.order_id 和 t1.status=new 和 t2.status = 已处理且 t3.status = 已交付

像这样继续为别人

于 2012-12-01T16:50:58.753 回答