很长一段时间后,我有机会在这里发布一个SQL Server问题。
我在SQL Server 2005中有一个如下所示的表变量。该表由其他团队编写的存储过程填充。
这是一个订单处理系统。根据{{1}}。
,各个部门可以通过多个流程完成每个订单以OPRouteCode
为例,它有两个OrderNo = 2
- 但这两个OPRouteCode
都使用相同部门的相同流程。它们被视为OPRouteCode
OPRouteCodes。
另一方面,例如equivalent
,流程和部门各不相同;因此它们不相同。
仅选择包含OrderNo = 1
non-equivalent
的订单的最佳方法是什么。
注意:如果只有一个OPRouteCodes
,则仅视为等效。只有当有多个OPRouteCode
时,才会出现非等效性。
获得此结果的最佳SQL Server查询是什么?经过几个小时的努力,我无法写任何东西。
OPRouteCode
表格变量
预期输出
答案 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