我有一个项目清单
ItemName制造商TopSalesUnit
Item1 A 100 Item2 A 80 Item3 A 60 Item4 B 70 Item5 B 50 Item6 B 30 Item7 C 10 Item8 C 05
我希望订购记录,以便首先显示最高的TopSalesUnit项目,然后显示来自不同制造商的下一个最高项目,然后显示下一个最高项目
显示第三个制造商,等等:
ItemName制造商TopSalesUnit
Item1 A 100 Item4 B 070 Item7 C 010 Item2 A 080 Item5 B 050 Item8 C 005 Item3 A 060 Item6 B 030
解决方法
尝试:
DECLARE @YourTable table (ItemName varchar(10),Manufacturer char(1),TopSalesUnit int) INSERT @YourTable VALUES ('Item1','A ',100) INSERT @YourTable VALUES ('Item2',80) INSERT @YourTable VALUES ('Item3',60) INSERT @YourTable VALUES ('Item4','B ',70) INSERT @YourTable VALUES ('Item5',50) INSERT @YourTable VALUES ('Item6',30) INSERT @YourTable VALUES ('Item7','C ',10) INSERT @YourTable VALUES ('Item8',05) SELECT dt.ItemName,dt.Manufacturer,dt.TopSalesUnit FROM (SELECT ItemName,Manufacturer,TopSalesUnit,ROW_NUMBER() OVER(PARTITION BY Manufacturer ORDER BY TopSalesUnit DESC) AS RowNumber FROM @YourTable ) dt ORDER BY dt.RowNumber,dt.Manufacturer
OUTPUT:
ItemName Manufacturer TopSalesUnit ---------- ------------ ------------ Item1 A 100 Item4 B 70 Item7 C 10 Item2 A 80 Item5 B 50 Item8 C 5 Item3 A 60 Item6 B 30 (8 row(s) affected)