我是使用 MS-Access 報告的新手。我有一個查詢回傳員工時間表的結果,按月份和工資代碼分組。我想做一份報告,顯示以下內容
| 員工 | 加班換班一月 | 定期輪班 | 2 月加班 | 二月定期輪班 |
|---|---|---|---|---|
| 1234 | 1 | 1 | 2 | 1 |
| 5678 | 5 | 2 | 1 | 0 |
但是我的查詢格式為:
| 員工 | 月 | 轉移 | 支付碼 |
|---|---|---|---|
| 1234 | 簡 | 1 | 加班 |
| 1234 | 簡 | 1 | 常規的 |
| 1234 | 二月 | 2 | 加班 |
| 1234 | 二月 | 1 | 常規的 |
| 5678 | 簡 | 5 | 加班 |
| 5678 | 簡 | 2 | 常規的 |
| 5678 | 二月 | 1 | 加班 |
| 5678 | 二月 | 0 | 常規的 |
是否可以有條件地告訴報告中的欄位參考特定的“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;
uj5u.com熱心網友回復:
考慮條件聚合:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374995.html
