我有一个表,其中包含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