Sql server 2005 获取列具有最大值的行
我有下表:Sql server 2005 获取列具有最大值的行,sql-server-2005,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 你们能告诉我最好的方法吗 我尝试了以下方法,但没有多大成功 嗨 请查看
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
你们能告诉我最好的方法吗
我尝试了以下方法,但没有多大成功
嗨
请查看所需的示例数据:因此查询应该
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
一种方法是使用
CTE
和ROW\u 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
你认为它会如何工作?您可能会发现您得到了更高质量的答案,如果您能够证明您有,人们会更愿意帮助您。同时显示示例的结果。由于您的表可能有重复的TNo,因此可能有2个最大值。我非常确定您需要方括号中的
desc
列;-)嗨,我试过cno&Tno做一个订单,但它在CTE中不受支持?嗨,我试过你的查询,但仍然得到rowid的两条记录;tno;cno rno 1 2488 22425 20882 1 2488 2241122005@user362283:编辑您的问题并显示示例数据和所需结果。顺便说一句,您可以始终使用selecttop1
hi我已经添加了有问题的示例。谢谢