[access查询]如何将人员每天签到的时间以横向显示为交叉表-Victor Duane
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-查询/SQL语句


[access查询]如何将人员每天签到的时间以横向显示为交叉表

发表时间:2007/11/27 13:46:21 评论(3) 浏览(9864)  评论 | 加入收藏 | 复制
   
摘 要:如何将人员每天签到的时间以横向显示为交叉表
正 文:

如何将人员每天签到的时间以横向显示为交叉表

示例下载:点击这里下载

USERID NAME STREET 日期 星期 时间
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 10:05:12
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 10:05:29
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 10:10:47
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 12:28:50
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 14:41:34
3 胡和良 早7.30-晚4.30 2007-10-22 星期一 15:22:47
43 陈琳琳 早7.30-晚4.30 2007-10-27 星期六 19:05:15
43 陈琳琳 早7.30-晚4.30 2007-10-30 星期二 07:15:32
43 陈琳琳 早7.30-晚4.30 2007-10-30 星期二 11:34:15
43 陈琳琳 早7.30-晚4.30 2007-10-30 星期二 12:25:22
43 陈琳琳 早7.30-晚4.30 2007-10-30 星期二 17:47:36
43 陈琳琳 早7.30-晚4.30 2007-10-30 星期二 17:51:27
43 陈琳琳 早7.30-晚4.30 2007-10-31 星期三 07:16:44

图1

这样的一个表,我们要显示为下面这样的表呢

USERID NAME 日期 星期 签到1 签到2 签到3 签到4 
3 胡和良 2007-10-22 星期一 10:05:12 10:05:29 10:10:47 12:28:50 
3 胡和良 2007-10-27 星期六 07:17:57 10:02:53 11:34:24 12:03:15   
3 胡和良 2007-10-30 星期二 07:15:32 11:34:15 12:25:22 17:47:36   
3 胡和良 2007-10-31 星期三 07:16:44       
43 陈琳琳 2007-10-22 星期一 10:05:12 10:05:29 10:10:47 12:28:50 
43 陈琳琳 2007-10-27 星期六 07:17:57 10:02:53 11:34:24 12:03:15   
43 陈琳琳 2007-10-30 星期二 07:15:32 11:34:15 12:25:22 17:47:36  
43 陈琳琳 2007-10-31 星期三 07:16:44       

我是用如下方法解决的

建三个查询
第一个查询的语句,先从两个表中提取数据,先自己的需要得到图1的数据显示方式:
Select CHECKINOUT.USERID, USERINFO.NAME, USERINFO.STREET, WeekdayName(Weekday([checktime])) AS 星期,
Format([checktime],"yyyy/mm/dd") AS 日期, Format([checktime],"hh:nn:ss") AS 时间
FROM CHECKINOUT INNER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID;
第二个查询,得到每天的次数的签到次数,用于列标题:
Select qryCheckInOut1.USERID, qryCheckInOut1.NAME, qryCheckInOut1.STREET, qryCheckInOut1.星期,
qryCheckInOut1.日期, qryCheckInOut1.时间, "签到" & DCount("日期","qryCheckInOut1","日期='" & [日期] & "'and [name]='" & [name] & "' and 时间 <= '" & [时间] & "'") AS 天次
FROM qryCheckInOut1;
第三个查询,就可以得到我们最终要的数据显示形式了:
TRANSFORM Last(qryCheckInOut2.时间) AS 签到时间
Select qryCheckInOut2.USERID, qryCheckInOut2.NAME, qryCheckInOut2.日期, qryCheckInOut2.星期
FROM qryCheckInOut2
GROUP BY qryCheckInOut2.USERID, qryCheckInOut2.NAME, qryCheckInOut2.日期, qryCheckInOut2.星期
PIVOT qryCheckInOut2.天次;


Access软件网交流QQ群(群号:198465573)
 
 相关文章
Access查询 交流QQ群群号:54525238 欢迎学习acc...  【宏鹏  2012/10/26】
常见问答
技术分类
相关资源
文章搜索
关于作者

Victor Duane

文章分类

文章存档

友情链接