当前位置: 代码迷 >> Sql Server >> 取每组最大值中的一条数据解决办法
  详细解决方案

取每组最大值中的一条数据解决办法

热度:71   发布时间:2016-04-24 22:57:05.0
取每组最大值中的一条数据

CREATE  table TEST1(FID int, ItemID varchar(1), QTY int)

insert into TEST1
select 1, 'a', 10 union all
select 2, 'a', 20 union all
select 3, 'a', 40 union all
select 4, 'a', 30 union all
select 5, 'a', 40 union all
select 1, 'b', 15 union all
select 2, 'b', 45 union all
select 3, 'b', 25 union all
select 4, 'b', 35 union all
select 5, 'b', 45 

希望查询结果为
2 b 45
3 a 40
即,取每组itemid的最大值对应数据的一条(最大值有多条时,只取一条)
不知如何才能实现,请指教
SQL ?每组?最大值

------解决方案--------------------

select * from TEST1 t
where QTY=(select max(QTY) from TEST1 where ItemID=t.ItemID)
and FID=(select min(FID) from TEST1 where ItemID=t.ItemID and QTY=t.QTY)
/*
FID         ItemID QTY
----------- ------ -----------
2           b      45
3           a      40
*/
  相关解决方案