select a.学号,a.毕业时间,a.学历 from
tabname a
inner join
(select 学号,max(毕业时间) as 毕业时间 from tabname group by 学号) b
on
a.学号=b.学号
and
a.毕业时间 = b.毕业时间
tabname a
inner join
(select 学号,max(毕业时间) as 毕业时间 from tabname group by 学号) b
on
a.学号=b.学号
and
a.毕业时间 = b.毕业时间
select 学号,max(毕业时间) as 毕业时间,max(学历) as 学历 from 表名 group by 学号
写出来的查询语句:select A4.工号,A4.时间,A4.最高
from
(select A1.工号,max(A1.时间) as 时间
from
(
select 工号,第一学历 as 最高,第一学历毕业时间 as 时间 from qzsy where year(第一学历毕业时间)<=2000 and month(第一学历毕业时间)<=8
union
select 工号,第二学历 as 最高,第二学历毕业时间 as 时间 from qzsy where year(第二学历毕业时间)<=2000 and month(第二学历毕业时间)<=8
union
select 工号,第三学历 as 最高,第三学历毕业时间 as 时间 from qzsy where year(第三学历毕业时间)<=2000 and month(第三学历毕业时间)<=8
) as A1
group by A1.工号) as A3,(
select 工号,第一学历 as 最高,第一学历毕业时间 as 时间 from qzsy where year(第一学历毕业时间)<=2000 and month(第一学历毕业时间)<=8
union
select 工号,第二学历 as 最高,第二学历毕业时间 as 时间 from qzsy where year(第二学历毕业时间)<=2000 and month(第二学历毕业时间)<=8
union
select 工号,第三学历 as 最高,第三学历毕业时间 as 时间 from qzsy where year(第三学历毕业时间)<=2000 and month(第三学历毕业时间)<=8
) as A4
where A3.工号=A4.工号 and A3.时间=A4.时间
这样写会出错,时间与学历不一定会是同一个记录
这个会出错,提示:学历不包含在聚集函数中
select 学号,max(毕业时间),(select 文凭 from 表名 b where b.毕业时间=max(a.毕业时间)) from 表名 a group by 学号测试通过
--
改成这样就行了,我测试过了,可以的:
select 学号,max(毕业时间) as 毕业时间,(select 学历 from 表名 b where b.毕业时间=max(a.毕业时间)) as 学历 from 表名 a group by 学号
之前的MAX(毕业时间)和MAX(学历)未必对应。
按排序规则来排:在地区设置是中国的,默认用Chinese_PRC,既按拼音排序。
Chinese_PRC