“两条领带”;事件表“;连同时间戳SQL查询
我在SQLServer中有两个DB表。我希望有一个查询结果,将操作符名称绑定到另一个表中的行记录。i、 e.对于“表B”中的每一行记录,它将检查事件发生时哪个操作员已登录。例外情况是没有操作员登录,因此结果中有空字段 下面的屏幕截图概述了这两个表以及示例结果的外观。任何帮助都将不胜感激…我在这里不适合 表 操作员姓名|登录时间|注销时间 汤姆2014年1月10日12:00 2014年1月10日12:09 迪克10/01/2014 12:10 10/01/2014 12:35 哈里王子2014年1月10日12:40 2014年1月10日12:45 表B 时间戳|事件 2014年1月10日12:03 A 2014年1月10日12:15 B 2014年1月10日12时36分 所需的查询结果 操作员名称|时间戳|事件名称 Tom 10/01/2014 12:03 A 迪克2014年1月10日12:15 B“两条领带”;事件表“;连同时间戳SQL查询,sql,sql-server-2008,Sql,Sql Server 2008,我在SQLServer中有两个DB表。我希望有一个查询结果,将操作符名称绑定到另一个表中的行记录。i、 e.对于“表B”中的每一行记录,它将检查事件发生时哪个操作员已登录。例外情况是没有操作员登录,因此结果中有空字段 下面的屏幕截图概述了这两个表以及示例结果的外观。任何帮助都将不胜感激…我在这里不适合 表 操作员姓名|登录时间|注销时间 汤姆2014年1月10日12:00 2014年1月10日12:09 迪克10/01/2014 12:10 10/01/2014 12:35 哈里王子2014年1
“无操作员”2014年1月10日12:36 A尝试如下外部应用:
SELECT a.OperatorName
,b.TIMESTAMP
,b.EventName
FROM tableB b
OUTER APPLY (
SELECT ISNULL(a.OperatorName,'No Operator')
FROM tableA
WHERE b.TIMESTAMP BETWEEN a.LogOnTime
AND a.LogOutTime
) AS a
尝试如下所示的外部应用:
SELECT a.OperatorName
,b.TIMESTAMP
,b.EventName
FROM tableB b
OUTER APPLY (
SELECT ISNULL(a.OperatorName,'No Operator')
FROM tableA
WHERE b.TIMESTAMP BETWEEN a.LogOnTime
AND a.LogOutTime
) AS a
我将通过显式的
左连接来实现这一点:
SELECT COALESCE(a.OperatorName, 'No Operator') as Operator, b.TIMESTAMP, b.EventName
FROM tableB b LEFT JOIN
tableA a
ON b.Timestamp BETWEEN a.LogOnTime and a.LogOutTime;
我将通过显式的左连接来实现这一点:
SELECT COALESCE(a.OperatorName, 'No Operator') as Operator, b.TIMESTAMP, b.EventName
FROM tableB b LEFT JOIN
tableA a
ON b.Timestamp BETWEEN a.LogOnTime and a.LogOutTime;