1

我有以下表格 -

**TimeLogs**
ID
UserID
JobID
TimeTaken

**Jobs**
ID
EstimatedTime
ActualTime

**ClockInLogs**
ID
UserID
ClockDateTimeIn
ClockDateTimeOut

以下查询生成重复记录 -

SELECT tl.JobID, TimeTaken as 'HoursSold',
DATEDIFF(minute, ClockDateTimeIn, ClockDateTimeOut) / 60 as Hours_Difference,
DATEDIFF(second, ClockDateTimeIn, ClockDateTimeOut) / 60 as Minutes_Difference
from TimeLogs tl
INNER JOIN Jobs j on tl.JobID = j.ID
LEFT JOIN ClockInLogs cil on tl.UserID = cil.UserID
where tl.UserID = 10000 and 
    ClockDateTimeIn BETWEEN DATEADD(wk, DATEDIFF(wk,0,'11/08/2013'), 0) AND 
    DATEADD(wk, DATEDIFF(wk,0,'11/08/2013'), 6)
    group by tl.ID, tl.JobID, j.TotalEstimatedCharge, tl.TimeTaken, cil.ClockDateTimeIn, cil.ClockDateTimeOut

重复记录截图

我想做的是返回 HoursWorked、Hours_Difference 和 Minutes_Difference 的总和——没有重复。我无法弄清楚重复的来源。有任何想法吗?

谢谢

4

2 回答 2

2

您需要汇总小时和分钟,而不是按它们分组:

这样做可能会超过 60 分钟。

select
    tl.JobID, 
    TimeTaken as 'HoursSold',
    Sum(datediff(n, ClockDateTimeIn, ClockDateTimeOut) / 60) Hours_Difference,
    Sum(datediff(s, ClockDateTimeIn, ClockDateTimeOut) / 60) Minutes_Difference
from 
    TimeLogs tl
        inner join
    Jobs j 
        on tl.JobID = j.ID
        left join
    ClockInLogs cil 
        on tl.UserID = cil.UserID
where 
    tl.UserID = 10000 and 
    ClockDateTimeIn between dateadd(wk, datediff(wk,0,'11/08/2013'), 0) and
    dateadd(wk, datediff(wk,0,'11/08/2013'), 6)
group by 
    tl.JobID, 
    tl.TimeTaken
于 2013-11-08T15:16:53.203 回答
0

如果没有看到数据,很难确定,但我怀疑您是按应该相加的字段(TimeTaken、ClockDateTimeIn 和 ClockDateTimeOut)进行分组:

SELECT tl.JobID,
SUM(TimeTaken) as 'HoursSold',
SUM(DATEDIFF(minute, ClockDateTimeIn, ClockDateTimeOut) / 60) as Hours_Difference,
SUM(DATEDIFF(second, ClockDateTimeIn, ClockDateTimeOut) / 60) as Minutes_Difference
from TimeLogs tl
INNER JOIN Jobs j on tl.JobID = j.ID
LEFT JOIN ClockInLogs cil on tl.UserID = cil.UserID
where tl.UserID = 10000 and 
    ClockDateTimeIn BETWEEN DATEADD(wk, DATEDIFF(wk,0,'11/08/2013'), 0) AND 
    DATEADD(wk, DATEDIFF(wk,0,'11/08/2013'), 6)
group by tl.JobID

请注意,我还删除了未在选择中的字段的分组依据,因为这也会造成重复的外观。

于 2013-11-08T15:21:27.627 回答