2
我有一個記錄用戶歷史狀態快照的歷史記錄表。爲了簡單起見,我們稱之爲「UserFooHistory」。現在我想寫一個查詢來找出用戶的Foo被禁用的總時間。因此,與下面的示例數據:用於確定歷史記錄表中的句點的SQL查詢
UserId Date FooEnabled
------ ---- ----------
123 2015-12-01 true
123 2015-12-04 false
123 2015-12-06 false
123 2015-12-09 true
123 2015-12-11 true
123 2015-12-12 false
123 2015-12-14 true
從這個數據,我希望看到7天的結果(富由12/4禁用 - 12/9,然後從12/12 - 12/14)。
什麼查詢會有效地得到這個結果?我懷疑這將是涉及LEAD()
或LAG()
,但考慮到事實,你可以在一個週期的中間有多餘的歷史記錄,它變得更復雜一點的東西......
我可能會使用LAG()來查找自上次改變的時間。然後,您可以使用CTE或其他方法輕鬆地將所有內容進行總結。 – ssn