sql - SQL Server 子查询的新手 - 希望是一个简单的查询

标签 sql sql-server in-subquery

我无法在单个查询中解决这个问题。 表 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/

相关文章:

sql - 当某些日期不存在时,Windows 函数按日期排序

mysql - SQL 用子句求和数据

sql - 将数字转换为 SQL 中的单词

php 为分页 mysql 键集选择每 4 个值

sql - 如何在 SQL 数据库中存储树

MySQL 在使用 IN(SUBQUERY) 时忽略索引?

MySQL WHERE <多列> IN <子查询>

php - 从数据库中选择所有以小写字母开头的字符串

sql-server - 如何以编程方式创建 SSIS 包?

MySQL 使用 IN/FIND_IN_SET 在子查询中读取多行