You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access如何将查询结果行转列制作员工考勤报表

MS Access考勤报表格式转换实现方案

两种方式均可实现目标报表格式,无需强制重构现有查询,你可以根据自己的使用场景选择:

方案1:直接基于现有查询制作报表,无需修改查询

  • 操作步骤:
    1. 新建绑定现有查询的报表,进入设计视图,设置报表按「员工ID」分组,保留员工ID组页眉/组页脚,隐藏明细部分
    2. 对每个目标列对应添加计算文本框,控件来源按规则填写条件求和公式即可:
      • OT Shifts Jan列:=Sum(IIf([Month]="Jan" And [PayCode]="OT", [ShiftsPerEmployee], 0))
      • Regular Shifts Jan列:=Sum(IIf([Month]="Jan" And [PayCode]="Regular", [ShiftsPerEmployee], 0))
      • 其余月份的列依次替换公式里的月份参数和Paycode参数即可
  • 适用场景:需要固定报表列数、无需动态适配新增月份的场景

方案2:重构为交叉表查询,直接生成目标格式数据集,制作报表更简便

直接用Access自带的交叉表查询语法,改写后的SQL如下:

TRANSFORM Sum(ShiftsPerEmployee) AS 总班次
SELECT EmployeeID
FROM (
    SELECT tblAssignedEmployees.EmployeeID, Format(Date_In,"mmm") AS [Month], Count(tblShift.Date_In) AS ShiftsPerEmployee, tblAssignedEmployees.PayCode
    FROM tblShift INNER JOIN tblAssignedEmployees ON tblShift.ShiftNum = tblAssignedEmployees.ShiftNum
    GROUP BY tblAssignedEmployees.EmployeeID, Format(Date_In,"mmm"), tblAssignedEmployees.PayCode
) AS 基础统计
GROUP BY EmployeeID
PIVOT [PayCode] & " Shifts " & [Month];
  • 特点:查询运行后直接输出你需要的宽表格式,字段名自动生成OT Shifts Jan、Regular Shifts Jan这类格式,直接绑定到报表即可,无需额外编写控件条件,后续新增月份或薪资代码时会自动扩展列,适配性更强。

内容的提问来源于stack exchange,提问作者user2059972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:27:04