在 SQL 中匹配时间

Matching up times in SQL

我有一个包含座席呼叫 activity 的数据库,我正在寻找座席让自己忙碌超过三分钟然后在一分钟内休息的实例。我的结果需要显示 Break 行和 Busy 行。

我已经走到这一步了,但我的脑袋已经转弯了 - 如果有任何帮助,我将不胜感激!!

SELECT * 
FROM
    DBO.AgentActivityReport Ar1

    Inner join dbo.AgentActivityReport Ar2
    on Ar1.[User_ID] = Ar2.[User_ID]
WHERE 
(
    Ar1.[ACTIVITY] = 'Busy'
    AND
    Ar1.[DURATION] > '00:03:00.0000000'
)
OR 
(
    Ar1.[ACTIVITY] LIKE 'Break (Tea Break)'
    AND
    Ar1.[DURATION] > '00:10:00.0000000'
)
OR
(
    Ar1.[ACTIVITY] LIKE 'Break (Lunch Break)'
AND
    Ar1.[DURATION] > '00:30:00.0000000'
)

AND Ar1.Activity in (select Ar2.Activity from dbo.AgentActivityReport Ar2 where Ar2.Activity in ('Break (Tea Break)','Break (Lunch Break)'))

嗯。 . .我认为这符合您的要求:

SELECT * 
FROM DBO.AgentActivityReport Ar1 JOIN    
     dbo.AgentActivityReport Ar2
     ON Ar1.[User_ID] = Ar2.[User_ID]
WHERE (Ar1.[ACTIVITY] IN ('Busy')
       Ar1.[DURATION] > '00:03:00.0000000'
      ) AND
      (Ar1.[ACTIVITY] IN ('Break (Tea Break)', 'Break (Lunch Break)') AND
       DATEDIFF(SECOND, AR1.FINISH, AR2.START) < 60
      );

你的问题没有说明 "break" 的持续时间,只说明中间的时间。