我只是无法在单个查询中解决这个问题。TblQcProduction 表对生产订单上的每个运算符(operator)都有一个记录。

我需要找出根据生产订单报告的最后一个运算符(operator)是谁。

SELECT  IDX, ProdOrder, Operator
FROM dbo.TblQCProduction

返回:
IDX     ProdOrder  Operator
8050745 325184     13012
8050746 325184     13035
8050747 325184     13036
8050748 325186     13005
8050749 325186     13038
8050750 325187     13022
8050751 325191     13022
8050752 325191     13035

我需要输出为(通过 prodOrder 返回 MAX IDX 的运算符):
IDX     ProdOrder Operator
8050747 325184    13036
8050749 325186    13038
8050750 325187    13022
8050752 325191    13035

我对分组或子查询感到不满意 - 我觉得会有一个非常简单的答案。

最佳答案

你需要使用 ROW_NUMBER() OVER

select IDX,ProdOrder,Operator

from
(
select IDX,ProdOrder,Operator,
       ROW_NUMBER() OVER
         (PARTITION BY ProdOrder ORDER BY IDX DESC) as rn
from TblQCProduction
) as T
WHERE RN=1;

SQLFiddle demo

关于sql - SQL Server 子查询的新手 - 希望是一个简单的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19027223/

10-13 05:44