请教行家指点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 编辑 ]
语句: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 编码
where 时间 between‘time1' and 'time2'
group by 编码
作者: oswica 发布时间: 2011-07-30
你问题问的不是特别的明白,你参照上面的试试吧
作者: oswica 发布时间: 2011-07-30