SQL仅保留时间在之后的记录
我有一张有Nr、日期时间、状态的桌子 如果已预订状态为0,则已预订状态为1 我需要每天得到一份清单,我想看看当天是否有人预订,但没有回来 我需要查找状态1,之后如果没有状态0 我试过这个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
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子句更新答案