I tested spirits and it works fine...Declare @myTable table (Rep_C varchar(10), Part_C varchar(10), HS_C varchar(10), Imp float)Insert Into @myTable Values ('004', '251', '020130', 12.0)Insert Into @myTable Values ('004', '699', '020230', 54.0)Insert Into @myTable Values ('004', '826', '020230', 45.0)Insert Into @myTable Values ('004', '276', '020230', 43.0)Insert Into @myTable Values ('004', '528', '020230', 19.0)Insert Into @myTable Values ('004', '124', '020329', 72.0)Insert Into @myTable Values ('004', '276', '020329', 50.0)Insert Into @myTable Values ('004', '276', '020442', 15.0)Insert Into @myTable Values ('004', '364', '020712', 1115.0)Insert Into @myTable Values ('004', '528', '021019', 11.0)Insert Into @myTable Values ('004', '360', '030269', 13.0)Insert Into @myTable Values ('004', '528', '030379', 13.0)Select *, (Select count(imp) from @myTable Where Rep_C = A.Rep_C and HS_C=A.HS_C and imp >= A.imp)From @myTable as AWhere (Select count(imp) from @myTable Where Rep_C = A.Rep_C and HS_C=A.HS_C and imp >= A.imp)<=3Order By Rep_C, HS_C, Imp descShow an example where it doesn't work...Corey