请教,麻烦帮忙写一个SQL,多谢!

起个昵称吧 发布于 2016/08/10 16:11
阅读 397
收藏 1

各位好:

   因为业务需要,实现在一个类似考勤的功能。想要统计指定某个人一段时间的考勤状态。但是有一个难点就是,要取出来每天考勤的最后一天记录的状态。然后按照查询时间段以yyyy-mm-dd的方式进行展示,并显示考勤状态。如果当天没有考勤记录,则展示的考勤结果为空 想要展示的格式如下:

     时间   考勤人ID  考勤状态     

    2016-08-01  100  1 

    2016-08- 02  100   

    2016-08-03   100   2

 因为实在写不出来这个SQL,所以请各位高手帮忙看下,小弟不胜感激。 具体表结构如下:
 表名:signrecord

字段:serialno  varchar流水号 

         signTime   int 考勤时间    时间戳

        signUid    varchar 考勤UID  

      signStatus   int  考勤状态  




加载中
0
起个昵称吧
起个昵称吧

问题已经自己解决了。 用SQL直接取出来时间段内每天的考勤情况。然后通过程序去判断是否有缺勤情况 。

 select a.lastTime,FROM_UNIXTIME(a.lastTime,'%Y-%m-%d') as signdate,s.signUid,s.signStatus,s.studentId,s.latitude,s.longitude from ocenter_signrecord s,
(select FROM_UNIXTIME(signTime,'%Y-%m-%d'),signUid,max(signTime) as lastTime from ocenter_signrecord group by FROM_UNIXTIME(signTime,'%Y-%m-%d'),signUid) a
 where s.signTime >= 1467302400 and s.signTime < 1470844800 and s.signUid =100 
and s.signTime = a.lastTime
and s.signUid = a.signUid
order by a.lastTime

0
skhuhu
skhuhu
select DATE_FORMAT(signTime,'%Y-%m-%d'),signUid,(select signStatus from signrecord where signUid =  a.signUid and signTime= max(a.signTime) ) 

from signrecord  a GROUP BY DATE_FORMAT(signTime,'%Y-%m-%d'),signUid

自己再优化下 随便写的···测试下吧



skhuhu
skhuhu
·我用的mysql ···你取得是空 那就不是mysql ··· 每个数据库的时间格式转换的方法不一样
起个昵称吧
起个昵称吧
好像是不行啊。 时间取出来都是空的。
返回顶部
顶部