我需要生成订单被拒项目的报告,当系统完成订单处理完毕并且必须考虑停止处理订单的条件是,我必须这样做: / p>
我想做一个考虑前两个条件的SQL查询,以便在系统不再处理订单时将订单中的被拒物品带给我。
场景示例:
所以,我正在尝试通过以下方式
select * from order_detail_status
where order_number = 'OR_001'
and process_status= '999'
and process_id = (select max(process_id) from configuracion.order_detail_status where order_number = 'OR_001' and process_status >= 600)
如果仅存在方案1,这将起作用,但是对于方案2,请求永远不会达到该状态,因此我尝试添加第二个条件:
or (select distinct (process_status) from configuracion.order_detail_status where order_number = 'OR_002' ) = '999'
在第二种情况下,我想指出订单的所有记录都被拒绝,状态为999,但这对我不起作用,有什么建议吗?
答案 0 :(得分:1)
如果要查找所有项目的process_status为999的订单,请尝试执行以下操作:
SELECT order_number, MIN(process_status) AS minps, MAX(process_status) AS maxps
FROM order_detail_status
GROUP BY order_number
HAVING minps=maxps AND minps=999
按顺序对行进行分组,然后执行min()和max()可以为订单提供最高和最低状态。如果它们匹配,则订单中所有项目都只有一种状态。如果单个状态为999(或> 600),那么您就有了答案。
HAVING就像WHERE条件,但在分组完成后仍会运行。
结果:
OR_002 999 999