Sql 选择表中的前1组

Sql 选择表中的前1组,sql,sql-server,tsql,group-by,sql-order-by,Sql,Sql Server,Tsql,Group By,Sql Order By,在ORD表中 ORD_CODE PROD_CODE 200212013 66298 200212014 66298 200212006 66297 200212007 66296 200212012 66296 200211025 66295 200211026 66295 200211027 66295 200211028 66295 200211029 66295 200211030 66295 200211031 66295 20021

在ORD表中

ORD_CODE    PROD_CODE
200212013   66298
200212014   66298
200212006   66297
200212007   66296
200212012   66296
200211025   66295
200211026   66295
200211027   66295
200211028   66295
200211029   66295
200211030   66295
200211031   66295
200211032   66295
200211033   66295
200211034   66295
我想要

200212014   66298
200212006   66297
200212012   66296
200211034   66295
我使用
从订单中选择不同的产品代码、订单代码
但它不起作用

我用兰诺?但也不起作用


子查询,COUNT(),TOP 1,DESNSE_RANK,所有内容都不起作用。

一种避免显式子查询的方法是使用带有关系的
TOP 1:

SELECT TOP 1 WITH TIES ORD_CODE, PROD_CODE
FROM yourTable
ORDER BY ROW_NUMBER() OVER (PARTITION BY PROD_CODE ORDER BY ORD_CODE DESC);

如果数据集只有两列,那么简单的聚合就足够了:

select min(ord_code) ord_code, prod_code
from mytable
group by prod_code

您可以使用()来实现它

;WITH cte_TempData as (
  SELECT ORD_CODE, PROD_CODE, ROW_NUMBER() OVER (PARTITION BY PROD_CODE ORDER BY ORD_CODE DESC) Row_Number
  FROM #TempTable
)
SELECT ORD_CODE, PROD_CODE
FROM cte_TempData
WHERE Row_Number = 1
输出