您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> access教程 >> access基础教程 >> 正文

Access教程:如何解决打卡记录交叉查询

作者:佚名    责任编辑:admin    更新时间:2022-06-22

Access教程:如何解决打卡记录交叉查询

    今天我们一起来看看下面的表格,是一些打卡记录,需要把记录排成交叉显示,具体要求如下:
一个表
---卡号----/-----日期----/  ---时间----
123456     2006-07-17       08:00
123456     2006-07-17       12:01
123456     2006-07-17       13:31
123456     2006-07-18       08:05
123456     2006-07-18       12:00
123456     2006-07-19       12:00

应生成查询:
---卡号---/ ----日期 --- / --- 时间1 /  时间2 /  时间3
123456  2006-07-17   08:00   12:00   13:31 
123456  2006-07-18   08:05   12:00                    
123456  2006-07-19   12:00

解决方式:

1、
先建查询1(普通选择查询):
   
Select 卡号, 日期, "时间" & DCount("[时间]","datarecord","时间<= #" & Format([时间],"Short Time") & "# and 日期 = #" & [日期] & "# and 卡号='" & [卡号] & "'") AS 时间段, 时间
FROM datarecord
GROUP BY 卡号, 日期, "时间" & DCount("[时间]","datarecord","时间<= #" & Format([时间],"Short Time") & "# and 日期 = #" & [日期] & "# and 卡号='" & [卡号] & "'"), 时间
orDER BY 卡号, 日期, 时间;

2、再建查询2(交叉查询):

TRANSFORM First(查询1.时间) AS 时间之第一条记录
Select 查询1.卡号, 查询1.日期
FROM 查询1
GROUP BY 查询1.卡号, 查询1.日期
PIVOT 查询1.时间段;