[英]MS Access Pivoting Query Result Rows into Columns
我是使用 MS-Access 報告的新手。 我有一個查詢返回員工時間表的結果,按月份和工資碼分組。 我想做一份報告,顯示以下內容
員工 | 加班班一月 | 定期輪班 | 加班班二月 | 定期輪班二月 |
---|---|---|---|---|
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;
考慮條件聚合:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.