是否有可能編寫基於日期時間列值的差,從相鄰行的值組的行的SQL查詢?通過差是否有可能組排彼此在T-SQL
讓我舉一個例子......我有一個SQL查詢是這樣的:
SELECT
Id,
StartTime,
EndTime,
datediff(second, max(StartTime), EndTime)) as Duration
FROM Timings
ORDER BY StartTime
它返回的結果是這樣的:
| ID | StartTime | EndTime | Duration
| 1 | 2017-10-06 10:59:48 | 2017-10-06 10:59:58 | 10
| 2 | 2017-10-06 11:00:02 | 2017-10-06 11:00:06 | 4
| 3 | 2017-10-06 11:00:15 | 2017-10-06 11:00:22 | 7
| 4 | 2017-10-06 11:00:30 | 2017-10-06 11:00:39 | 9
| 5 | 2017-10-06 15:34:31 | 2017-10-06 15:34:45 | 14
| 6 | 2017-10-06 15:34:48 | 2017-10-06 15:34:56 | 8
| 7 | 2017-10-06 15:34:52 | 2017-10-06 15:34:59 | 7
這裏最重要的是,計時分兩批進行,前四項全部在上午11點左右完成,第二項在下午3點半左右完成。
我想獲得時序,平均持續時間的每個批次的開始/結束時間,並定時組中的數量的詳細信息。要做到這一點,我需要的是一種按批次對時間進行分組的方法,其中批次定義爲一組時間,在一個結束時間與下一個開始時間之間的時間小於30秒時,按開始時間排序。可能嗎?
上的真實情況一些相關的注意事項...
- 唯一真正區分批次的特點是一個定時的結束和下一個的開始之間的差距會更大顯著。硬編碼一個固定的時間限制是可以的。
- 如在本示例中,存在可以在一天多個批次,於是按日期分組已經出來了。
- 在現實批,可以從幾分鐘到任何東西幾個小時之久,僅包含幾個計時,或幾千。沒有設定批次發生的時間。
- 。注意到在線路的定時的6個& 7.多定時確實發生在平行彼此重疊,中的一個的結束和下一個的開始之間的大間隙的區別仍雖然站作爲識別批次的方式。
這是輝煌的。完美工作。謝謝。 –
@SimonPStevens樂於幫忙! – SqlZim