SQL Query基于记录的发生

时间:2015-07-29 15:41:52

标签: sql-server sql-server-2005

很长一段时间后,我有机会在这里发布一个SQL Server问题。

我在SQL Server 2005中有一个如下所示的表变量。该表由其他团队编写的存储过程填充。

这是一个订单处理系统。根据{{​​1}}。

,各个部门可以通过多个流程完成每个订单

OPRouteCode为例,它有两个OrderNo = 2 - 但这两个OPRouteCode都使用相同部门的相同流程。它们被视为OPRouteCode OPRouteCodes。

另一方面,例如equivalent,流程和部门各不相同;因此它们不相同。

仅选择包含OrderNo = 1 non-equivalent的订单的最佳方法是什么。

注意:如果只有一个OPRouteCodes,则仅视为等效。只有当有多个OPRouteCode时,才会出现非等效性。

获得此结果的最佳SQL Server查询是什么?经过几个小时的努力,我无法写任何东西。

OPRouteCode

表格变量

enter image description here

预期输出

enter image description here

1 个答案:

答案 0 :(得分:0)

好吧,这次我明白了。对不起之前的错误答案。

Select OrderNo,OPRouteCode
From (
select OrderNo,OPRouteCode, RANK() OVER(PARTITION BY OrderNo,Department ORDER BY Process ) 'Rnk'
from @OrderProcess
) a 
Where Rnk =2