Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

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

时 间:2007-11-27 13:46:21
作 者:victorduane   ID:70  城市:闵行
摘 要:如何将人员每天签到的时间以横向显示为交叉表
正 文:

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

示例下载:点击这里下载

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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助