我正在使用MS Access 2010中的数据库
和我需要构建一个查询来计算每个员工的月薪
它是这样的:
查询中有2个表:Shifts
,Employees
班次的字段为EmployeeID
,字段为Day
日期字段格式为:短日期
问题是我不知道如何访问月份和年份!
我知道这是完全错误的,但我想做这样的事情:
SELECT
FROM EmployeesTBL INNER JOIN ShiftsTBL ON EmployeesTBL.EmployeeID = ShiftsTBL.EmployeeID
WHERE
Year(ShiftsTBL.Day)=[Enter Year]
AND
Month(ShiftsTBL.Day)=[Enter Month]
;
在SELECT之后我需要写什么来获得所有移位的总和并将其除以emp工作的天数
注意:在班次表中,每班次都有EntryDate
和ExitDate
答案 0 :(得分:2)
Access有一堆内置日期功能。我相信月(日期)和年(日期)将为您提供所需。
像
这样的东西SELECT EmpName
FROM Employees, Shifts
WHERE Employees.EmployeeID = Shifts.EmployeeID
AND
Month(Shifts.Day) = INPUT2.VALUE
AND
Year(Shifts.Day) = INPUT1.VALUE
应该得到你想要的东西!
编辑:聚合:这是如何工作的将取决于您的数据库的设置方式。我想我明白你想要总结工作时间并除以天数?
如果是这样,您将使用Sum()和Count()。您将按员工ID分组
SELECT Sum(Shifts)/Count(DaysWorked) AS SumDividedByCount
FROM EmployeesTBL INNER JOIN ShiftsTBL
ON EmployeesTBL.EmployeeID = ShiftsTBL.EmployeeID
WHERE
Year(ShiftsTBL.[Day])=[Enter Year]
AND
Month(ShiftsTBL.[Day])=[Enter Month]
GROUP BY EmployeeID
我使用了WHERE子句,因为我认为结果需要在分组之前进行过滤。如果结果需要在分组后进行过滤,则会使用HAVING子句(并且会在GROUP BY之后进行)