日期:2014-05-18  浏览次数:20471 次

mm馬上送分取最大值問題?
表student  

STUDENTID   姓名   分數      
1                     A           92
2                     A           94
3                     B           98
4                     B           99
5                     C           98

以姓名分組要取出分數最大值的所有記錄!


------解决方案--------------------
select *
from 表名 AS t
where 分數 = (select max(分數) from 表名 where 姓名=T.姓名)
------解决方案--------------------
select a.* from tb a,
(select 姓名, max(分數) as 分数 group by 姓名) b
where a.姓名=b.姓名 and a.分数=b.分数
------解决方案--------------------
declare @tab table (id int, 姓名 varchar(100), 分数 int)
insert into @tab
select 1, 'A ',92 union all
select 2, 'A ',94 union all
select 3, 'B ',98 union all
select 4, 'B ',99 union all
select 5, 'C ',98

Select * From @tab t Where 分数 In (Select max(分数) From @tab b Where b.姓名 = t.姓名)

(所影响的行数为 5 行)

id 姓名 分数
----------- ---------------------------------------------------------------- -----------
5 C 98
4 B 99
2 A 94