SQL只保留与记录时间后
问题描述:
我有一个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
答
你可以选择该行,其中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)
)
嗨,我正在使用MS SQL 2008服务器 – Danie
add aos a prope r数据示例。 – scaisEdge
添加了示例数据 – Danie