请教行家指点SELECT的问题

请教行家指点SELECT:
语句:select * from 表 where 时间 between ‘time1' and 'time2'           返回结果有5行
     编码      工号     时间
1201           001      12:01
1202           003      12:02
1203           002      12:03
1204           001      12:04
1204           003      12:05
第二次语句:select  编码 from 表where 时间 in (select max(时间) from 表
where 时间 between‘time1' and 'time2'   group by 编码)    返回结果有4行
     编码      工号     时间
1201           001      12:01
1202           003      12:02
1203           002      12:03
1204           003      12:05

取了不重复的以及重复当中时间为大的“编码”,现在求时间段内编码不重复(如果重复就选大的)的每个工号的结果,用下面这个语句不行,返回的工号001还是有2个。正确的结果应该为“工号001”有1个。“工号002”有1个,“工号003”有2个,加起来等于上表的总数

select  count(编码) from 表where 时间 in (select max(时间) from 表
where 时间 between‘time1' and 'time2'  and 工号='001' group by 编码)

肯请高手帮帮忙啦,自己摸了一天了还是没搞懂,先谢谢啦!

[ 本帖最后由 ztz1207 于 2011-7-30 01:17 编辑 ]

作者: ztz1207   发布时间: 2011-07-30

select 编码,max(工号),max(时间) from 表
where 时间 between‘time1' and 'time2'
group by 编码

作者: oswica   发布时间: 2011-07-30

你问题问的不是特别的明白,你参照上面的试试吧

作者: oswica   发布时间: 2011-07-30