各位大侠好:数据库内容名称  型号  数量
A     S1     100
B     S2     150
A     S3     120
B     S25    60
A     S20    30
C     S1     10得到结果:
名称   型号   数量
B      S2     150
B      S25    60
A      S3     120
A      S1     100
A      S20    30
C      S1     10解释:
先按数量,哪个名称数量最大的,排到前面,然后按照这个名称数量排序,接着第二个名称的。

解决方案 »

  1.   


    with tb(a,b,c) as(
    select 'A','S1',100 union
    select 'B','S2',150 union
    select 'A','S3',120 union
    select 'B','S25',60 union
    select 'A','S20',30 union
    select 'C','S1',10
    ),
    tc as(
    select *,number=(select max(c) from tb where a.a=a) from tb a
    )
    select a,b,c from tc
    order by number desc,c desc
      

  2.   


    declare @T TABLE
    ([名称] varchar(1),[型号] varchar(3),[数量] int)
    insert @T
    select 'A','S1',100 union all
    select 'B','S2',150 union all
    select 'A','S3',120 union all
    select 'B','S25',60 union all
    select 'A','S20',30 union all
    select 'C','S1',10SELECT [名称] ,[型号] ,[数量] FROM @T t
    ORDER BY ( SELECT   MAX([数量])
               FROM     @T
               WHERE    [名称] = t.[名称]
             ) DESC ,[数量] DESC
    /*
    名称   型号   数量
    ---- ---- -----------
    B    S2   150
    B    S25  60
    A    S3   120
    A    S1   100
    A    S20  30
    C    S1   10
    */
      

  3.   


    select a.* from tkk a join (select mc,max(sl) sl from tkk group by mc ) b on a.mc=b.mcorder by b.sl desc,a.sl desc
      

  4.   

    好久不上MSDN,OUT了,又长见识了,ORDER BY 中再套用SELECT