我有一個事件表與下列:(添加引用數據從不同的表線表列
- 序列(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