【问题标题】:MS Access Pivoting Query Result Rows into ColumnsMS Access 将查询结果行透视到列中
【发布时间】:2022-01-04 20:35:15
【问题描述】:

我是使用 MS-Access 报告的新手。我有一个查询返回员工时间表的结果,按月份和工资码分组。我想制作一份显示以下内容的报告

Employee OT Shifts Jan Regular Shifts Jan OT Shifts Feb Regular Shifts Feb
1234 1 1 2 1
5678 5 2 1 0

但是我的查询格式为:

Employee Month Shift Paycode
1234 Jan 1 OT
1234 Jan 1 Regular
1234 Feb 2 OT
1234 Feb 1 Regular
5678 Jan 5 OT
5678 Jan 2 Regular
5678 Feb 1 OT
5678 Feb 0 Regular

是否可以有条件地告知报告上的字段引用特定的“Where 子句”,以便我可以随意移动字段,或者我是否需要修改我的查询才能做到这一点?

作为参考,我的查询代码是:

SELECT tblAssignedEmployees.EmployeeID, Format(Date_In,"yyyy-mm") 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,"yyyy-mm"), tblAssignedEmployees.PayCode;

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    考虑条件聚合:

    SELECT e.EmployeeID
         , SUM(IIF(MONTH(s.Date_In) = 1 AND e.PayCode = 'OT', 1, 0) AS [OT Shifts Jan]
         , SUM(IIF(MONTH(s.Date_In) = 1 AND e.PayCode = 'Regular', 1, 0) AS [Regular Shifts Jan]
         , SUM(IIF(MONTH(s.Date_In) = 2 AND e.PayCode = 'OT', 1, 0) AS [OT Shifts Feb]
         , SUM(IIF(MONTH(s.Date_In) = 2 AND e.PayCode = 'Regular', 1, 0) AS [Regular Shifts Feb]
    FROM tblShift s
    INNER JOIN tblAssignedEmployees e
       ON s.ShiftNum = e.ShiftNum
    GROUP BY e.EmployeeID
    

    如果没有IIF,则更短,将 True 条件相加但乘以 -1,因为 Access 将 True 视为 -1 而 False 视为 0。

    SELECT e.EmployeeID
         , SUM(MONTH(s.Date_In) = 1 AND e.PayCode = 'OT') * -1 AS [OT Shifts Jan]
         , SUM(MONTH(s.Date_In) = 1 AND e.PayCode = 'Regular') * -1 AS [Regular Shifts Jan]
         , SUM(MONTH(s.Date_In) = 2 AND e.PayCode = 'OT') * -1 AS [OT Shifts Feb]
         , SUM(MONTH(s.Date_In) = 2 AND e.PayCode = 'Regular') * -1 AS [Regular Shifts Feb]
    FROM tblShift s
    INNER JOIN tblAssignedEmployees e
       ON s.ShiftNum = e.ShiftNum
    GROUP BY e.EmployeeID
    

    【讨论】:

    • 非常有帮助,谢谢!仍然令人沮丧的是,Access 的报告并没有更好。我认为重点是为数据本身分离数据视图。
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多