前几天一个朋友发过来一个表,是一些打卡记录,需要把记录排成交叉显示,具体要求如下:
一个表
---卡号----/-----日期----/ ---时间----
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(普通选择查询):
Select 卡号, 日期, "时间" & DCount("[时间]","datarecord","时间<= #" & Format([时间],"Short Time") & "# and 日期 = #" & [日期] & "# and 卡号='" & [卡号] & "'") AS 时间段, 时间
FROM datarecord
GROUP BY 卡号, 日期, "时间" & DCount("[时间]","datarecord","时间<= #" & Format([时间],"Short Time") & "# and 日期 = #" & [日期] & "# and 卡号='" & [卡号] & "'"), 时间
orDER BY 卡号, 日期, 时间;
再建查询2(交叉查询):
TRANSFORM First(查询1.时间) AS 时间之第一条记录
Select 查询1.卡号, 查询1.日期
FROM 查询1
GROUP BY 查询1.卡号, 查询1.日期
PIVOT 查询1.时间段;
具体例子,请移步:http://www.accessbbs.cn/bbs/viewthread.php?tid=2847