首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于group by 多列显示,着急请问!

2012-02-25 
关于group by 多列显示,着急,请教!!!有这样一个表格:姓名成绩考试时间王刚762006-10-10王刚662006-7-13王

关于group by 多列显示,着急,请教!!!
有这样一个表格:
姓名         成绩         考试时间
王刚         76             2006-10-10
王刚         66             2006-7-13
王刚         81             2006-4-20
王刚         86             2007-1-10
张平         80             2006-9-12
张平         68             2006-5-23
张平         88             2007-2-1
张平         77             2006-12-2

想要找到每个学生的“最好成绩”,同时显示“学生姓名”和“考试时间”。
上面的例子,查询结果应该是:
王刚         86           2007-1-10
张平         88           2007-2-1

最好的成绩容易得出:
select   姓名,   max(成绩)   from   成绩表   group   by   姓名

但是如何同时显示“考试时间”呢??

[解决办法]
Select * from 成绩表 as t where not exists
(Select * from 成绩表 where 姓名=t.姓名 and 成绩> t.成绩)
[解决办法]
select * from T as tmp
where not exists(select 1 from T where 姓名=tmp.姓名 and 成绩> tmp.成绩)
[解决办法]

create table #tab
(
姓名 varchar(10),成绩 int,时间 datetime
)

--select *
--from #tab

insert into #tab (姓名,成绩,时间)
select '王刚 ',76, '2006-10-10 '
union
select '王刚 ',66, '2006-7-13 '
union
select '王刚 ',81, '2006-4-20 '
union
select '王刚 ', 86 , '2007-1-10 '
union
select '张平 ' , 80 , '2006-9-12 '
union
select '张平 ' , 68 , '2006-5-23 '
union
select '张平 ' , 88 , '2007-2-1 '
union
select '张平 ', 77, '2006-12-2 '

--truncate table #tab
select * from #tab as tmp
where not exists(select 1 from #tab where 姓名=tmp.姓名 and 成绩> tmp.成绩)

================
姓名 成绩 时间
---------- ----------- ------------------------------------------------------
王刚 86 2007-01-10 00:00:00.000
张平 88 2007-02-01 00:00:00.000

(所影响的行数为 2 行)

热点排行