【发布时间】:2017-09-13 18:19:03
【问题描述】:
我正在努力解决这个问题。我有一个查询,将在两个单独的列(最初在同一列)中显示 IN 和 Out 状态和日期时间。查询将以我需要的方式返回结果,但 OUT 日期显示不正确。每个 ID 有多个 In/Out 状态和时间。我只需要最近 24 小时内的最新进出时间。该查询将正确返回 In 时间,但许多 Out 时间显示的日期早于 In 时间。所以我需要看到的是,过去 24 小时内的 OUT 时间,如果用户还没有签出,它应该是空白的。有人可以帮我吗?请参阅下面的代码。
SELECT t1.ID, t1.FNAME, t1.InOut_Status AS Status_In, t1.Datetime AS
Datetime_IN, t2.InOut_Status AS Status_Out, t2.Datetime As Datetime_OUT
FROM table t1
LEFT JOIN table t2
ON t1.id = t2.id
AND t2.InOut_Status = 'OUT' AND t1.Datetime >= DATEADD(hour, -24,GETDATE())
WHERE t1.InOut_Status = 'IN'
【问题讨论】:
-
请阅读this,了解一些改进问题的技巧。使用适当的软件(MySQL、Oracle、DB2 等)和版本标记数据库问题很有帮助,例如
sql-server-2014。语法和功能的差异通常会影响答案。
标签: sql sql-server tsql datetime