将记录关联在一起



我在一个表中存储了以下数据。

      创建日期ServerName标题
2014-09-23 13:43:31.477 LAB1\TEST SQL Server状态:无法连接
2014-09-23 13:30:23.017 LAB1\TEST SQL Server运行
2014-09-23 13:26:211.110 LAB1\TEST SQL Server状态:无法连接
2014-09-23 13:20:42.243 LAB1\TEST SQL Server运行
2014-09-23 13:16:30.457 LAB1\TEST SQL Server状态:无法连接
2014-09-23 13:15:03.993 LAB1\TEST SQL Server运行
2014-09-23 13:08:36.763 LAB1\TEST SQL Server状态:无法连接
2014-09-23 13:05:59.490 LAB1\TEST SQL Server正在运行
2014-09-23 12:59:30.17 LAB1\TEST SQL Server状态:无法连接
2014-09-23 12:55:49.303 LAB1\TEST SQL Server正在运行
2014-09-23 09:54:43.180 LAB1\TEST SQL Server状态:无法连接
2014-09-23 09:52:05.453 LAB1\TEST SQL Server正在运行
2014-09-23 09:46:55.013 LAB1\TEST SQL Server状态:无法连接
2014-09-23 09:44:54.957 LAB1\TEST SQL Server正在运行
2014-09-23 09:11:24.100 LAB1\TEST SQL Server状态:无法连接
2014-09-23 09:06:55.703 LAB1\TEST SQL Server正在运行
2014-09-23 08:59:53.773 LAB1\TEST SQL Server状态:无法连接
2014-09-23 07:55:35.537 LAB1\TEST SQL Server正在运行
2014-09-23 07:49:50.830 LAB1\TEST SQL Server状态:无法连接


我需要将所有"无法连接"记录与相应的"SQL Server正在运行"记录关联起来,并计算出每个记录之间的持续时间。

需要考虑的是,根据上面"2014-09-23 13:43:31.477"的例子,可能没有"SQL Server正在运行"的记录,这意味着它仍然处于关闭状态。

有人对我如何处理这个问题有什么建议吗?

选择所有连接失败记录。对于每场演出,下一次(即最短的后期)连接时间。

select 
  datecreated, 
  servername,
  (
    select min(running.datecreated)
    from mytable running
    where running.heading = 'SQL Server running'
    and running.servername = notrunning.servername
    and running.datecreated > notrunning.datecreated
  ) as connected
from mytable notrunning
where heading = 'SQL Server status: Unable To Connect';

基于此,您可以计算持续时间。请注意,对于一个连接,您可能会多次尝试失败。您可以考虑只显示每个连接的第一个故障,而忽略其他故障。不过,这需要一个更复杂的查询。(或者你的表只存储第一个失败吗?那么你已经得到了所需的东西。)

最新更新