我有一个事件表与下列:(添加引用数据从不同的表线表列
- 序列(INT)
- 的DeviceID(VARCHAR(8))
- TIME_START日期时间)
- DeviceState(SMALLINT)
- TIME_END(日期时间)
除time_end以外的所有列均填充了数据(我的当前time_end列在表格中为NULL)。我需要做的是用事件关闭数据填充time_end列。这实际上是来自同一设备的新事件发生的时间。 下面是一个例子的数据模型,它应该如何在工作进行到底:
sequence DeviceID time_start DeviceState time_end
--------------------------------------------------------------------------------------
1 000012A7 2010-10-31 12:00 14 2010-10-31 12:10
2 000012A7 2010-10-31 12:10 18 2010-10-31 12:33
3 000012A8 2010-10-31 12:20 16 2010-10-31 13:01
4 000012A7 2010-10-31 12:33 13 2010-10-31 12:47
5 000012A7 2010-10-31 12:47 18 2010-10-31 13:20
6 000012A8 2010-10-31 13:01 20 2010-10-31 13:23
7 000012A7 2010-10-31 13:20 05 2010-10-31 14:12
8 000012A8 2010-10-31 13:23 32 2010-10-31 14:15
9 000012A7 2010-10-31 14:12 12
10 000012A8 2010-10-31 14:15 35
的想法是,为表中的每个记录,我需要对特定的设备更高的序列中选择一个记录并更新与TIME_END该更高级别记录的time_start数据。 有了这个,我可以跟踪每个事件的时间段。
我想与一个函数调用这样做,但我有两个主要困难: 1.得到从例如数据:序列= 2和更新顺序= 1 2的TIME_END创建函数这将随着新记录被添加到表中,不断做这件事
我对SQL很陌生,我对其他可能的东西感到迷茫。基于我的知识,我应该使用可以将数据一起引用的功能,但是我目前的知识限制了我这样做。
我希望有人能为我提供一些指导,指导我走向哪个方向,如果我走在正确的轨道上,我会提供一些反馈意见。任何支持文章将非常感激。
对于哪个版本的SQL Server?如果time_end始终是前一个time_start,那么为什么记录它 - 这是通过为deviceid选择time_start并通过time_start值排序可以获得的冗余数据... – 2010-10-31 19:12:06
要添加OMG Ponies建议的内容,如果它是避免反复编写逻辑的问题,因为你计划经常使用它,你可以创建一个视图。 – 2010-10-31 19:18:45
@OMG小马:SQL服务器2008 – Mark 2010-10-31 19:30:50