Sql Server按特定顺序显示项目
发布时间:2020-12-12 08:58:28 所属栏目:MsSql教程 来源:网络整理
导读:我有一个项目清单 ItemName制造商TopSalesUnit Item1 A 100 Item2 A 80 Item3 A 60Item4 B 70 Item5 B 50 Item6 B 30Item7 C 10 Item8 C 05 我希望订购记录,以便首先显示最高的TopSalesUnit项目,然后显示来自不同制造商的下一个最高项目,然后显示下一个最高项
我有一个项目清单
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 如何在T-SQL中编写查询来实现呢? 解决方法尝试: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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |