Plsql PL/SQL对于每个分组只返回一行
我有一张表,上面列出了如下项目。它基本上有操作编号(OP_NO),告诉产品在流程中的位置。这些OP编号可以发布或完成。它们遵循一个过程,如10必须在20之前发生,20必须在30之前发生等。然而,用户实际上并没有更新所有步骤,因此我们最终完成了一些无序的项目,而前面的步骤没有如下所示(OP30已完成,但OP 10和20未完成)Plsql PL/SQL对于每个分组只返回一行,plsql,Plsql,我有一张表,上面列出了如下项目。它基本上有操作编号(OP_NO),告诉产品在流程中的位置。这些OP编号可以发布或完成。它们遵循一个过程,如10必须在20之前发生,20必须在30之前发生等。然而,用户实际上并没有更新所有步骤,因此我们最终完成了一些无序的项目,而前面的步骤没有如下所示(OP30已完成,但OP 10和20未完成) 我基本上希望生成每个订单ID的列表,显示每个订单ID的最远完成点。我想我可以通过查询STATUS='Completed'并按OP_NO Desc排序来实现这一点。但是我不知
我基本上希望生成每个订单ID的列表,显示每个订单ID的最远完成点。我想我可以通过查询STATUS='Completed'并按OP_NO Desc排序来实现这一点。但是我不知道如何为每个订单ID只生成一个结果。例如,在订单ID 345中,步骤10和20已经完成。我只想返回步骤20当前的位置。我想我可以用“WHERE ROWNUM来实现这一点,如果我正确理解了你想要什么,下面的内容应该满足你的需要。只需将测试表替换为表名即可
select *
from test_table tst
where status = 'Completed'
and op_no = (select max(op_no)
from test_table tst1
where tst.order_id = tst1.order_id
and status = 'Completed');
根据您的样本数据,这产生了以下结果
Order_Id Order_Sec Order_Release op_no Status Description
123 2 3 30 Completed Op30
345 1 8 20 Completed Op20
干杯
肖恩·彼得森(Shaun Peterson)为什么你认为你需要一个存储过程?这真的很有帮助!谢谢肖恩!
Order_Id Order_Sec Order_Release op_no Status Description
123 2 3 30 Completed Op30
345 1 8 20 Completed Op20