微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sql Server按特定顺序显示项目

我有一个项目清单

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)

原文地址:https://www.jb51.cc/mssql/74690.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐