22,209
社区成员
发帖
与我相关
我的任务
分享
select *
from table A
where not exists (select 1 from table where Uname=A.Uname and Price>A.Price)
SELECT * FROM (SELECT *,ROW_NUMBER()OVER(PARTITION BY Uname ORDER BY Price DESC,BuyDate DESC,ID DESC) AS RN FROM tabName ) AS T WHERE RN=1
其它方法可参照
http://bbs.csdn.net/topics/240034273--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[Uname] nvarchar(22),[Price] int,[BuyDate] Date)
Insert #T
select 1,N'张三',180,'2017-12-1' union all
select 2,N'张三',280,'2017-12-7' union all
select 3,N'李四',480,'2017-12-10' union all
select 4,N'李四',280,'2017-12-11' union all
select 5,N'王武',280,'2017-12-1' union all
select 6,N'王武',880,'2017-12-11' union all
select 7,N'王武',380,'2017-12-15'
Go
--测试数据结束
SELECT ID ,
Uname ,
Price ,
BuyDate
FROM ( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY Uname ORDER BY Price DESC ) AS num
FROM #T
) t
WHERE num = 1