我有一個表,其中包含n歷史記錄條目,記錄活動/非活動狀態的變化。SQL優化計算總時間跨度的方法
[Id] [ParentId] [Date] [Status]
<guid> 0 2013-05-03 15:51:24.810 'Active'
<guid> 0 2013-05-03 15:52:10.773 'Inactive'
<guid> 0 2013-05-03 15:54:26.710 'Active'
<guid> 0 2013-05-03 17:09:27.327 'Inactive'
我試圖確定項目在整個歷史中處於「活動」狀態的時間。用遊標迭代歷史記錄並使用DATEDIFF
來計算它的性能非常糟糕。我試圖避免使用SQLCLR,但可能在內存中以相當便宜的方式執行此操作......有誰知道完成此操作的良好的SQL本機高性能方法嗎?
「自我加入」這個詞讓人想起。有某種記錄ID嗎? – 2013-05-07 19:45:22
是的,對不起,歷史表上有一個UUID列,父對象上有FK列。 - 用更好的示例表更新了問題。 – lukiffer 2013-05-07 19:47:14
*'我試圖確定該項目處於「活動」狀態的時間長度*「 - 如何識別」項目「?它是'[Id]','[ParentId]'還是其他一些不包含的字段?另外,你可以修改現有的桌面設計嗎? – 2013-05-07 19:52:23