I have this BAQ I’m trying to write that has odd behavior for users that have more than one clock in entry per day.
It is doubling their hours. The subquery that’s pulling the hours per weekday is fine, but when it’s summarized at the top level, it doubles them. I have the top query set as distinct and it only shows one record if ran alone.
Hours without the formula summarized; take Monday, for example–it’s showing 11.06 for that day, which correctly shows the sum of the two entries the user logged for the day (6.38 and 4.68). All of the rows, but one are 0.00, so the sum should be 11.06.
Non summarized formula at the top level (grouped)
Now when I summarize those calculated fields at the top level, suddenly I’m getting duplication.
Here’s the SQL view of the query:
select distinct
(convert(int,LaborHed.EmployeeNum)) as [Calculated_EmpID],
[EmpBasic].[LastName] as [EmpBasic_LastName],
[EmpBasic].[FirstName] as [EmpBasic_FirstName],
[EmpBasic].[JCDept] as [EmpBasic_JCDept],
[JCDept].[Description] as [JCDept_Description],
(SUM(Days1.Calculated_Sunday)) as [Calculated_SumSunday],
(SUM(Days1.Calculated_Monday)) as [Calculated_SumMonday],
(SUM(Days1.Calculated_Tuesday)) as [Calculated_SumTuesday],
(SUM(Days1.Calculated_Wednesday)) as [Calculated_SumWednesday],
(SUM(Days1.Calculated_Thursday)) as [Calculated_SumThursday],
(SUM(Days1.Calculated_Friday)) as [Calculated_SumFriday],
(SUM(Days1.Calculated_Saturday)) as [Calculated_SumSaturday],
(SumSunday+SumMonday+SumTuesday+SumWednesday+SumThursday+SumFriday+SumSaturday) as
[Calculated_Weekly]
from Erp.LaborHed as LaborHed
inner join Erp.EmpBasic as EmpBasic on
LaborHed.Company = EmpBasic.Company
And
LaborHed.EmployeeNum = EmpBasic.EmpID
inner join Erp.JCDept as JCDept on
EmpBasic.Company = JCDept.Company
And
EmpBasic.JCDept = JCDept.JCDept
inner join (select distinct
[Days].[EmployeeNum] as [Days_EmployeeNum],
[Days].[PayrollDate] as [Days_PayrollDate],
(SUM((case when datepart(weekday,Days.PayrollDate)=1 then (Days.PayHours) else 0 end))) as [Calculated_Sunday],
(SUM((case when datepart(weekday,Days.PayrollDate)=2 then (Days.PayHours) else 0 end))) as [Calculated_Monday],
(SUM(case when datepart(weekday,Days.PayrollDate)=3 then (Days.PayHours) else 0 end)) as [Calculated_Tuesday],
(SUM(case when datepart(weekday,Days.PayrollDate)=4 then (Days.PayHours) else 0 end)) as [Calculated_Wednesday],
(SUM(case when datepart(weekday,Days.PayrollDate)=5 then (Days.PayHours) else 0 end)) as [Calculated_Thursday],
(SUM(case when datepart(weekday,Days.PayrollDate)=6 then (Days.PayHours) else 0 end)) as [Calculated_Friday],
(SUM(case when datepart(weekday,Days.PayrollDate)=7 then (Days.PayHours) else 0 end)) as [Calculated_Saturday]
from Erp.LaborHed as Days
group by [Days].[EmployeeNum],
[Days].[PayrollDate]) as Days1 on
LaborHed.EmployeeNum = Days1.Days_EmployeeNum
And
LaborHed.PayrollDate = Days1.Days_PayrollDate
where (LaborHed.EmployeeNum = '1657')
and Days1.Days_PayrollDate >= '10/1/2017' and Days1.Days_PayrollDate <= '10/7/2017'
group by (convert(int,LaborHed.EmployeeNum)),
[EmpBasic].[LastName],
[EmpBasic].[FirstName],
[EmpBasic].[JCDept],
[JCDept].[Description]