从记录属性的现有表在SQL Server中构建伪日志表

从记录属性的现有表在SQL Server中构建伪日志表,sql,sql-server,date,logging,Sql,Sql Server,Date,Logging,我有一张桌子,看起来像: ID1 EventID EnterStatus LeaveStatus 1 ABC43 2017-01-01 2017-01-05 1 F2C72 2017-01-03 2017-02-02 1 DBC42 2017-01-06 2017-02-02 2 96FUD 2017-01-03 2015-01-05 2 85YDZ

我有一张桌子,看起来像:

ID1     EventID    EnterStatus   LeaveStatus
1       ABC43      2017-01-01    2017-01-05
1       F2C72      2017-01-03    2017-02-02
1       DBC42      2017-01-06    2017-02-02
2       96FUD      2017-01-03    2015-01-05
2       85YDZ      2017-01-07    NULL
其中,ID表示和项than处于状态X或不处于状态X

EnterStatus和LeaveStatus字段是日期时间,用于标记此项目是否发生了导致其处于状态X的事件

例如,对于ID1

  • 2017年1月1日,事件ID ABC43发生,导致ID1进入状态X
  • 2017年1月3日,事件ID F2C72发生,本来会将其ID1置于状态X,但它已经处于状态X,因为ABC43没有 还没有结束
  • 2017年1月5日,eventID ABC43结束,但ID1未离开状态X,因为eventID F2C72尚未结束
  • 2017年1月6日,DBC42事件发生,这将使ID1进入状态X,但它已经处于状态X,因为F2C72尚未结束 然而
  • 2017年2月2日,F2C72和DBC42均结束,因此ID1离开状态X
我想要的是一个表,用于确定每个ID1的返回值是否处于状态X。X

那看起来像

ID      EnterStatus   LeaveStatus  InStatusX
1        2017-01-01    2017-02-02   True
1        2017-02-02    NULL         False
2        2017-01-03    2015-01-05   True
2        2017-01-05    2015-01-07   False
2        2017-01-07    NULL         True

关于查询我的表以返回这种新格式的最佳方法,有什么建议吗?

我很难理解这个问题。你能解释清楚吗?更新了,希望对你有所帮助!