我正在爲現有應用程序添加一些新功能(數據庫是Microsoft SQL 2005)。基本上,我試圖計算特定部門在特定日期範圍內「無人」的分鐘數(或秒數)。我希望用一個語句理想地查詢數據集。我有一個循環遍歷記錄集的例程,解析它並吐出一個答案,但它非常難看。有沒有人有任何建議,我可以優化它的可讀性,使用純SQL - 甚至任何指針/我應該看的文章,我的Googlefu是讓我失望。在日期/時間範圍內計算數據集之外的總時間
我想在某些方面,這幾乎就像一個日曆的「空閒時間」搜索,但聚合。
這裏是一個模擬樣本數據集,讓您瞭解我正在處理的內容(有效地同事進入時鐘,然後計時)。爲了簡單起見,我使用的是四捨五入到幾分鐘,但我可能會在幾秒鐘內計算。
------------------------------------------------------------------------
| Colleague Id | Department Id | Date In | Date Out |
------------------------------------------------------------------------
| 1 | 1 | 04/01/2010 08:45 | 04/01/2010 11:45 |
| 2 | 1 | 04/01/2010 09:00 | 04/01/2010 12:15 |
| 3 | 1 | 04/01/2010 10:00 | 04/01/2010 12:00 |
| 4 | 1 | 04/01/2010 12:30 | 04/01/2010 17:00 |
| 1 | 1 | 04/01/2010 12:45 | 04/01/2010 17:15 |
| 3 | 1 | 04/01/2010 13:00 | 04/01/2010 17:25 |
| 5 | 2 | ... | ... |
------------------------------------------------------------------------
因此,例如,如果我查詢上表中爲部門ID = 1,04/01/2010 8時三十分00秒和04/01/2010 17點30分○○秒之間,我期望的結果是35分鐘(或2100秒)「無人駕駛時間」(這是無人駕駛的範圍的開始,中間和結束時間的總和)。
感謝亞當鏈接這些項目進一步閱讀,非常有趣! – benno 2010-01-07 15:06:57