现有表:
员工考勤表(单位编号+员工编号+上班时间+...) 说明:无主键,此表在员工每日上班都会登记一次(纪录一条考勤纪录)需求:
想按单位查该单位所有员工最后一次上班考勤时间清单,例如原始数据是:
单位编号 员工编号 上班时间
100001 100001 2005-01-01 08:17:15
100001 100002 2005-01-01 08:20:10
100001 100001 2005-01-02 08:10:24 要求的结果是:
单位编号 员工编号 上班时间
100001 100001 2005-01-02 08:10:24
100001 100002 2005-01-01 08:20:10如您回复能满足要求,会全额给分
员工考勤表(单位编号+员工编号+上班时间+...) 说明:无主键,此表在员工每日上班都会登记一次(纪录一条考勤纪录)需求:
想按单位查该单位所有员工最后一次上班考勤时间清单,例如原始数据是:
单位编号 员工编号 上班时间
100001 100001 2005-01-01 08:17:15
100001 100002 2005-01-01 08:20:10
100001 100001 2005-01-02 08:10:24 要求的结果是:
单位编号 员工编号 上班时间
100001 100001 2005-01-02 08:10:24
100001 100002 2005-01-01 08:20:10如您回复能满足要求,会全额给分
解决方案 »
- 求个SQL语句,不知道怎么写
- 关于oracle字段排序的问题?
- 关于数状结构的查询
- 求一语句实现按季度分组
- 存储过程中执行字符串中的sql语句
- 如何购买oracle,请大家帮帮我
- 【delphi中利用ClientDataSet和ADOQuery分别如何调用oracle中的存储过程-JCC0128-400分奉上】
- 新手
- insert into tele_success select * from tele_success1; 提示出错
- 新手请教一个简单的SQL %NOTFOUND的问题,谢谢
- 高分求教 有关Oracle ERP 中 Concurrent Program 方面的内容。 up者有分 能帮忙解决所有问题的高手,我愿意另开200分相谢!!
- 请问返回式游标,在fetch之后,怎么让其记录指针归位?
估计问题没有写完,应该不会这么简单。
就是我要做一个报表,查询我的一张流水表里最后一次操作的纪录,但是要求把所有字段都列出来的。
总不能把所有字段放到SELECT里面,然后又全放到GROUP BY里面吧,那样的话,可能每个人所有的交易纪录都会出来的,因为所有的字段组合起来,就不可能有重复的,分组也没意义了
from 员工考勤表
where (单位编号,员工编号,上班时间) in ( select 单位编号,员工编号,max(上班时间)
from 员工考勤表
group by 单位编号,员工编号)
from 员工考勤表 A
join (select 单位编号,员工编号,max(上班时间) 上班时间 from tab group by 单位编号,员工编号) A1 on (A.单位编号=A1.单位编号 and A.员工编号=A1.员工编号 and A.上班时间=A1.上班时间)
from 员工考勤表 A
join (select 单位编号,员工编号,max(上班时间) 上班时间 from 员工考勤表 group by 单位编号,员工编号) A1 on (A.单位编号=A1.单位编号 and A.员工编号=A1.员工编号 and A.上班时间=A1.上班时间)
to 回复人: risingsoft(一苇渡江)
这样没什么效率的。我用存储过程写的
......
现有表:
员工考勤表(单位编号+员工编号+上班时间+...) 说明:无主键,此表在员工每日上班都会登记一次(纪录一条考勤纪录)
=============================================
to回复人: xinpingf(白开心) ( )
select *
from 员工考勤表
where (单位编号,员工编号,上班时间) in ( select 单位编号,员工编号,max(上班时间)
from 员工考勤表
group by 单位编号,员工编号)=============================================
=============================================
人家risingsoft(一苇渡江)都说了,连主键都没有,怎么可能有索引呢?所以xinpingf(白开心)算是白写了,人家可是体会不到你那sql精妙所在的~~~~~~
( select a.*, rownumber() over(partition by 员工编号 order by 上班时间 desc) as row_num
from 员工考勤表
) b
where row_num=1;是不是没见过,^_^
邦腾科技 http://www.partner-soft.com