SQL仅保留时间在之后的记录

SQL仅保留时间在之后的记录,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张有Nr、日期时间、状态的桌子 如果已预订状态为0,则已预订状态为1 我需要每天得到一份清单,我想看看当天是否有人预订,但没有回来 我需要查找状态1,之后如果没有状态0 我试过这个 SELECT A1.Number, A1.Time TimeOut, A2.Time TimeIn FROM dbo.Items A1 LEFT JOIN dbo.Items A2 ON A1.Number = A2.Number AND A2.Time !< A1.Time AN

我有一张有Nr、日期时间、状态的桌子

如果已预订状态为0,则已预订状态为1

我需要每天得到一份清单,我想看看当天是否有人预订,但没有回来

我需要查找状态1,之后如果没有状态0

我试过这个

SELECT A1.Number, A1.Time TimeOut, A2.Time TimeIn  
FROM dbo.Items A1 LEFT JOIN dbo.Items A2 ON A1.Number = A2.Number 
    AND A2.Time !< A1.Time 
    AND A1.State = 1 
    AND A2.State = 0 
WHERE A2.Time IS NULL
数据如下:

NR  : Status : Date
5      0       2017/09/15 09:00
10     0       2017/09/15 12:00
5      1       2017/09/15 13:00
15     0       2017/09/15 15:45 

您可以选择NR没有日期的行作为状态输出,例如:

select NR, Date as TimeOut, NULL as TimeIn
FROM dbo.Alarms
    where (NR) NOT in (
      select a.NR 
       from dbo.Alarms a
       INNER JOIN (
        select NR, Date 
        from  dbo.Alarms
        where status = 1
       ) t on t.NR = a.NR and Date(t.date) = date(a.date)
    )

您可以选择NR没有日期的行作为状态输出,例如:

select NR, Date as TimeOut, NULL as TimeIn
FROM dbo.Alarms
    where (NR) NOT in (
      select a.NR 
       from dbo.Alarms a
       INNER JOIN (
        select NR, Date 
        from  dbo.Alarms
        where status = 1
       ) t on t.NR = a.NR and Date(t.date) = date(a.date)
    )

您好,我正在使用MS SQL 2008 Server添加正确的数据示例..添加示例数据您的SQL语句中有语法错误。1选择中的
太多(尾随),执行不等于时,语法为
!另外,您似乎要连接两个表(报警、项目),但只提供其中一个表的示例数据?请更新您的问题以包含两个表中的数据,并标记每个示例数据集是哪个表。您好,我正在使用MS SQL 2008 Server添加正确的数据示例..添加示例数据您的SQL语句中有语法错误。1选择中的
太多(尾随)
,执行不等于时,语法为
!另外,您似乎要连接两个表(报警、项目),但只提供其中一个表的示例数据?请更新您的问题以包含两个表中的数据,并标记每个样本数据集是哪个表。我从dbo添加的NR和DATE列无效。Timein后报警,它工作正常,感谢您的帮助。请编辑您的答案,我将接受它作为rightOps@丹尼:很多。。谢谢回答更新与适当的从句我得到无效列的NR和DATE我已经添加了从dbo。警报后,Timein,它的工作,感谢您的帮助。请编辑您的答案,我将接受它作为rightOps@丹尼:很多。。谢谢用适当的from子句更新答案