VB6 ms访问sql查询不同计数两个表

VB6 ms访问sql查询不同计数两个表

问题描述:

我需要为每个特定员工输出此数据: employee_Id,employee_name,presence.year,presence.month,count(day),sum(working hours),sum(holiday)小时),[工作时间] - [假期时间]。 我用VB6项目这个查询,但似乎没有很好的工作:VB6 ms访问sql查询不同计数两个表

SELECT 
    Employees.Employee_ID AS ID 
    , Employees.Full_Name AS Name 
    , Presence.Yr AS Year 
    , Presence.Mnth AS Month 
    , SUM(IIF(Presence.Dy, 1, 0)) Work_Days 
    , SUM(IIF(Presence.Hr, Presence.Hr, 0)) AS Work_Hours 
    , SUM(IIF(Presence.Holidays, Presence.Holidays, 0)) AS Holidays_Hours 
    , SUM(IIF(Presence.Hr, Presence.Hr, 0)) - SUM(IIF(Presence.Holidays, Presence.Holidays, 0) AS Total_Work_Hours 
FROM Employees 
INNER JOIN Presence ON Presence.Employee_ID = Employees.Employee_ID 
WHERE Employees.Company = 'aCompany' 
    AND Employees.Employee_ID = 'anEmmployee' 
GROUP BY Employees.Employee_ID, Employees.Full_Name, Presence.Yr, Presence.Mnth 

这样在图片:http://oi60.tinypic.com/122c6xz.jpg

任何人都可以在这方面帮助?

+0

您能提供我们预期的结果吗?首先,从你的GROUP BY子句中移除Presence.Dy,Presence.Hr,Presence.Holidays,你也可以从你的SELECT语句中删除DISTINCT。 – 2014-08-28 22:37:24

+0

需要将此表作为结果:http://oi60.tinypic.com/122c6xz.jpg – eviB 2014-08-28 22:42:45

+0

好吧,目前的结果是什么给你的查询?你是否尝试过我提到的更正? – 2014-08-28 22:44:40

下面是一些调整,请查询:

SELECT 
    Employees.Employee_ID AS ID 
    , Employees.Full_Name AS Name 
    , Presence.Yr AS Year 
    , Presence.Mnth AS Month 
    , SUM(IIF(Presence.Dy, 1, 0)) Work_Days 
    , SUM(IIF(Presence.Hr, Presence.Hr, 0)) AS Work_Hours 
    , SUM(IIF(Presence.Holidays, Presence.Holidays, 0)) AS Holidays_Hours 
    , SUM(IIF(Presence.Hr, Presence.Hr, 0)) - SUM(IIF(Presence.Holidays, Presence.Holidays, 0) AS Total_Work_Hours 
    , SUM(Presence.Hr)/Employees.HoursPerDay + Employees.TotalAnnualHolidays - Employees.DoneHolidays AS AvailableHolidays 
FROM Employees 
INNER JOIN Presence ON Presence.Employee_ID = Employees.Employee_ID 
WHERE Employees.Company = 'aCompany' 
    AND Employees.Employee_ID = 'anEmmployee' 
GROUP BY Employees.Employee_ID, Employees.Full_Name, Employees.HoursPerDay, Employees.TotalAnnualHolidays, Employees.DoneHolidays, Presence.Yr, Presence.Mnth 

您可以测试这个新的查询,并给我讲的结果和你在找什么区别的信息?

希望这会有所帮助。

+0

该查询似乎工作正常,但当涉及到空值时,它显示一个错误。如何避免空值或将它们设置为0? – eviB 2014-08-29 07:49:51

+0

我更新了查询以替换NULL值,您可以测试它并告诉我它是否更好? – 2014-08-29 07:55:15

+0

我在第一个CASE处显示语法错误。这个语法是否也适用于ms访问? – eviB 2014-08-29 08:09:10