Sql 按员工列出的总工资工时

Sql 按员工列出的总工资工时,sql,ms-access,Sql,Ms Access,好的,我们有一个Access数据库,我们在其中记录每个员工每天的后期制作、非制作和其他时间。员工可能有几天的时间在项目之间分配 出于工资单录入目的,我们设计了一份报告,汇总工作时间,并计算正常时间和加班时间。我遇到的问题是,如果工作日被分为两个项目,那么它会错误地计算该日期的小时数 例如,在7月10日,该员工总共工作了11个小时。其中5个小时花在WA302上,6个小时花在HU047上。当我生成工资工时报告时,它会分别为我提供两个金额的总计,这意味着加班工时将无法正确计算 如何根据每天工作的日期计

好的,我们有一个Access数据库,我们在其中记录每个员工每天的后期制作、非制作和其他时间。员工可能有几天的时间在项目之间分配

出于工资单录入目的,我们设计了一份报告,汇总工作时间,并计算正常时间和加班时间。我遇到的问题是,如果工作日被分为两个项目,那么它会错误地计算该日期的小时数

例如,在7月10日,该员工总共工作了11个小时。其中5个小时花在WA302上,6个小时花在HU047上。当我生成工资工时报告时,它会分别为我提供两个金额的总计,这意味着加班工时将无法正确计算

如何根据每天工作的日期计算总小时数

这是SQL语句:

SELECT
    EmployeeLookUptbl.EmployeeDriver,
    EquipmentTimesheettbl.Employee,
    EquipmentTimesheettbl.Date,
    EquipmentTimesheettbl.ProductionHours,
    EquipmentTimesheettbl.NonProductionHours,
    EquipmentTimesheettbl.RepairHours,
    EquipmentTimesheettbl.[Stat Holiday],
    EquipmentTimesheettbl.TravelTime,
    EquipmentTimesheettbl.TruckWash,
    EquipmentTimesheettbl.FirstAid,
    EquipmentTimesheettbl.DesignatedDriver,
    EquipmentTimesheettbl.LOA,
    EquipmentTimesheettbl.[Vehicle Allownance],
    EquipmentTimesheettbl.DaysWorked,
    [ProductionHours]+[NonProductionHours]+[RepairHours] AS TotalHours,
    IIf([TotalHours]>8,8,[TotalHours]) AS RegularHours,
    IIf([totalhours]<8,0,[totalhours]-8) AS Overtime,
    EquipmentTimesheettbl.RPP,
    EmployeeLookUptbl.FirstName,
    EquipmentTimesheettbl.Phase
FROM
    EquipmentTimesheettbl
    LEFT JOIN EmployeeLookUptbl
    ON EquipmentTimesheettbl.Employee = EmployeeLookUptbl.ReportName
WHERE
    (((EquipmentTimesheettbl.Date)
    Between [Enter Start Date] And [Enter End Date]))
ORDER BY EquipmentTimesheettbl.Date;

小时数应该是作业的属性,因此您可以这样访问它:

Total.hours = Job.hours + Job2.hours;
转化为

Total.hours = WA302.hours + HU047.hours;
转化为

Total.hours = 6+5;
希望这有助于您的思维过程,但除非您向我们展示您目前是如何做到这一点的SQL、Java等,否则我们无法帮助您完成其他思维过程

编辑:从SQL

sum(hours)

每个作业都应该是它自己的行。

听起来你是在按日期和项目分组,而不仅仅是按日期分组。如果不知道Access数据库的模式或试图使用的查询,就不可能确定

从你的问题听起来,你想要一份报告,它将按日期和员工给你小计

我知道这并不能完全解决你的问题,但是有很多工具可以用来跟踪员工的工作和支付工资。除非您有非常特殊的需求,否则我建议您使用Quickbooks之类的工具,而不是在Access中构建一些东西。退房请注意,我甚至不使用它们,也不为它们工作,但它们为所有功能每月收费40美元几乎是绝对值得的。

您需要使用SUM来提供一个小时总数。此外,简化查询-删除所有不需要的字段

从这个开始:

SELECT Equip.Employee,
    Sum([ProductionHours]) AS TotalProductionHours, 
    Sum([NonProductionHours]) AS TotalNonProductionHours, 
    Sum([RepairHours]) AS TotalRepairHours, 
FROM EquipmentTimesheettbl As Equip
    LEFT JOIN EmployeeLookUptbl As Employee 
    ON Equip.Employee = Employee.ReportName
WHERE
    (((Equip.Date)
    Between [Enter Start Date] And [Enter End Date]))
ORDER BY Equip.Date;
然后将其用作新查询的基础。您可以使上面的连接更加稀疏—如果它们提供的信息仅用于报告,请保存连接以备将来使用

无论您看到的是单独的行而不是合计行,请删除强制断开的字段或插入GROUP BY子句。”“日期”是属于WHERE子句但不属于“SELECT”子句的字段的一个很好的示例

这是一个可能有用的方法。另外,Access帮助应该可以为您解答这个问题,尽管刚才我还没有找到我想要的关于这个主题的内容


此外,非常重要的一点是,不要命名表字段日期,因为这是一个访问保留关键字

我已经修改了我原来的帖子,加入了Sql stmnt。每个作业都有自己的行,其中包括日期、阻止生产时间等。因此,表单上的一个日期可以显示在两行中,即每个区块一个日期……在我的报告中,只有日期包含在查询中,而不是项目中。我也没有在我的查询中包含该项目。我们希望使用access程序来实现这一点,因为所有生产m3都可以在其中随时获得,因此我们可以更快地计算我们的m3/hr。应该读取日期的OOP包括在内,并且分组仅在报告中。报告或查询中均未包含任何项目。查看您的查询,我注意到您没有按日期分组。您应该在Access中创建一个查询,首先按日期汇总每个用户的小时数。i、 e.查询定义可以如下所示:从EmployeeLookUpbl中选择Employee.ID、Timesheet.Date、SUM Timesheet。[ProductionHours]+Timesheet。[NonProductionHours]+Timesheet。[RepairHours]作为员工加入设备TimesheetBl作为Employee.ID上的时间表=Timesheet.EmployeeID按Employee.ID分组,Timesheet.Date然后您可以使用该查询通过将其连接到其他表来生成报表。您好,我从查询中添加了SQL…希望它能有所帮助。感谢您帮助您解决此问题。这让我有点发疯……总小时字段是项目中所有工作小时的总和。当我们将它们输入表单时,在该日期每个项目都有单独的行。你是说我需要在报告中分别计算每个日期的总和,然后在此基础上计算正常工作时间和加班时间?每个日期的工作时间决定了我们的加班时间,而不是一周内的加班时间,因为一些工资单正在运行。因为我们正在记录它,所以它改变了计算的方式。由于工资系统将此作为该期间的工资包含在内,所以此特定报告需要所有字段。因此,如果我将此字段名称作为WorkDate输入会更好吗?它现在按工作日期合计小时数,因此我将尝试将其添加到我的报告中,祝我好运。。。。