Используя пост К.М., я думаю, он был близок к тому, что вы хотите, но в правильном порядке
DECLARE @YourTable table (ItemName varchar(10), Manufacturer char(1), TopSalesUnit int)
INSERT @YourTable VALUES ('Item1','A ',100)
INSERT @YourTable VALUES ('Item2','A ',80)
INSERT @YourTable VALUES ('Item3','A ',60)
INSERT @YourTable VALUES ('Item4','B ',70)
INSERT @YourTable VALUES ('Item5','B ',50)
INSERT @YourTable VALUES ('Item6','B ',30)
INSERT @YourTable VALUES ('Item7','C ',10)
INSERT @YourTable VALUES ('Item8','C ',05)
select
ItemName
,Manufacturer
,TopSalesUnit
,ROW_NUMBER() over (order by TopSalesUnit desc) as rn
,rank() over (partition by manufacturer order by TopSalesUnit desc) as rankcost
from
@YourTable
order by rankcost, rn
Результат:
Item1 A 100 1 1
Item4 B 70 3 1
Item7 C 10 7 1
Item2 A 80 2 2
Item5 B 50 5 2
Item8 C 5 8 2
Item3 A 60 4 3
Item6 B 30 6 3