获取具有列的最大值的行

时间:2012-06-10 11:48:39

标签: sql-server-2005

我有下表:

TNO : can be duplicate
CNo : can be duplicate

我需要从表A中选择针对CNo的最大Tno,其中a.RNO = B.RNO

表A

Tno  Rno  name   desc
100  200  adam   aadddddd
100  200  adam   aadddddd
101  201  king   aasdfdsf

表B

Cno  Rno  
101  200

请你们建议最好的方法。

我尝试了以下但没有太大成功

您好,

请查看示例数据为reqeusted:所以查询应该

Actual Data :

Rowum   cno     Tno     Rno  
1   24908   24047   22021
1   24909   22424   22022
1   20438   22426   22023

必填数据:它应显示针对Cno的最大值tno

Rowum   cno     Tno     Rno  
1   24908   24047   22021    
1   20438   22426   22023

1 个答案:

答案 0 :(得分:1)

一种方法是使用CTEROW_NUMBER函数:

WITH CTE AS(
    SELECT RowNum =
       ROW_NUMBER()OVER(PARTITION BY A.Rno ORDER BY Tno DESC)
    , A.Tno,  A.Rno,  name,   [desc]
    FROM TableA A INNER JOIN TableB B ON A.RNO=B.RNO
)
SELECT * FROM CTE
WHERE RowNum = 1