Sql 选择表中的前1组
在ORD表中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_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
输出