2017-10-05 50 views
1

我有一个NR,日期时间的表,状态SQL只保留与记录时间后

如果预订一空状态为1,如果预订的状态是0

我需要每天得到一个列表,其中我想看看它是否在当天被预订了,但没有返回。

我需要寻找状态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 : TimeOut    : TimeIn : 

10 2017/09/15 12:00  NULL 
15 2017/09/15 15:45  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 
+0

嗨,我正在使用MS SQL 2008服务器 – Danie

+0

add aos a prope r数据示例。 – scaisEdge

+0

添加了示例数据 – Danie

回答

0

你可以选择该行,其中NR没有日期的状态OUT例如:

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) 
    ) 
+0

我得到NR和日期无效列 – Danie

+0

我已经添加了从dbo.Alarms Timein后,它的工作原理,感谢您的帮助。请编辑你的答案,我会接受它的权利 – Danie

+0

Ops ... @Danie许多..谢谢..答案更新与适当的从条款 – scaisEdge

相关问题