需要选择人员单独会话重叠的行

时间:2017-05-05 15:43:09

标签: sql sql-server sql-server-2008 tsql

我需要提取信息未正确插入数据库的所有行。基本上一个人不能同时在2个会话中,所以我想得到2个会话重叠的所有行。

我有以下代码,这些代码是我之前提出的问题所建立的,但似乎无法获得重叠的Sessions数据。

SELECT
       a.[abc_id]
      ,a.[abc_person]
      ,a.[abc_date]
      ,a.[abc_duration]



FROM [flx_Session] a
JOIN [flx_Session] b on a.abc_date <= (DATEADD(MINUTE, b.abc_duration, b.abc_date))
    AND (DATEADD(MINUTE, a.abc_duration, a.abc_date)) >= b.abc_date
    AND a.abc_person != b.abc_person

1 个答案:

答案 0 :(得分:0)

除了join子句的最后一部分外,你看起来看起来是正确的。

试试这个:

select
    a.[abc_id]
  , a.[abc_person]
  , a.[abc_date]
  , a.[abc_duration]
from [cedar].[dbo].[flx_Session] a
  join [cedar].[dbo].[flx_Session] b 
    on a.abc_date < dateadd(minute, b.abc_duration-1, b.abc_date)
   and dateadd(minute, a.abc_duration-1, a.abc_date) > b.abc_date
   and a.abc_person = b.abc_person
   and a.abc_id != b.abc_id