开发者社区> 问答> 正文

SQL Server计算当前行和下一行之间的datediff的最佳方法?

我有以下大致结构:

Object -> Object Revisions -> Data

数据可以在多个对象之间共享。

我想做的是清除旧的对象修订版。我想保留第一个,活跃的修订版本,以便保留一段时间的最后一个更改。数据可能会在2天的过程中发生很大变化,然后搁置几个月,所以我想在更改开始和新设置的结束更改之前保留最新版本。

我当前正在使用游标和临时表来保存更改之间的ID和日期,因此我可以选择要摆脱的低挂水果。这意味着使用@ LastID,@ LastDate,更新并插入到临时表等。

在不使用游标和临时表的情况下,是否存在一种更简便/更好的方法来计算初始结果集中当前行和下一行之间的日期差?

我使用的是sql server 2000,但对2005、2008的任何新功能也可能会有所帮助。

展开
收起
心有灵_夕 2019-12-26 21:37:29 1028 0
1 条回答
写回答
取消 提交回答
  • 如果标识列是连续的,则可以使用以下方法:

    SELECT curr.*, DATEDIFF(MINUTE, prev.EventDateTime,curr.EventDateTime) Duration FROM DWLog curr join DWLog prev on prev.EventID = curr.EventID - 1
    
    2019-12-26 21:37:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载