各位大侠好:数据库内容名称 型号 数量
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解释:
先按数量,哪个名称数量最大的,排到前面,然后按照这个名称数量排序,接着第二个名称的。
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解释:
先按数量,哪个名称数量最大的,排到前面,然后按照这个名称数量排序,接着第二个名称的。
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
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
*/
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