SQL查询获取最后两条记录的DateDiff

标签 sql sql-server datediff

我有一个名为“Event”的表,其中 eventNum 作为主键,日期作为 SQL Server 2008 R2 中的 datetime2(7)。我试图获取表中最后两行的日期并以分钟为单位获取差异。这是我目前拥有的:

Select DATEDIFF(MI, e.date,(Select e2.date from Event e2 where eventNum = (Select MAX(e2.eventNum))))
    From Event e
    Where eventNum = (Select MAX(e.eventNum)-1 from e)

我收到此错误:

Invalid column name 'Select eventNum from Event Where eventNum = Select MAX(eventNum) from Event'.

我已经改变了 100 次,但无法让它工作。有什么帮助吗?

最佳答案

您可以使用ROW_NUMBER

WITH CTE AS 
(
   SELECT RN = ROW_NUMBER() OVER (ORDER BY eventNum DESC)
        , date
   FROM Event 
)
SELECT Minutes = DATEDIFF(minute, 
           (SELECT date FROM CTE WHERE RN = 2),
           (SELECT date FROM CTE WHERE RN = 1))

fiddle :http://www.sqlfiddle.com/#!3/3e9c8/17/0

关于SQL查询获取最后两条记录的DateDiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13185869/

相关文章:

Mysql——一个查询中有 2 个计数,错误的第二个计数结果

json - 批量导入JSON到SQL Server

sql-server - 在 iOS 上通过套接字编程连接到 SQL Server

Mysql 选择两个存储的日期相隔两天或更多天

javascript - 如何从剩余时间中减去时间?

php - 一次查询中的嵌套集、产品计数和类别深度

php - 用于从用户提交的数据确定值(value)的数据库设计

sql - 当行可以包含 0 时计算百分比

sql-server - SQL Server : Why does comparison null=value return true for NOT IN?

SQL - datediff(分钟)不包括周末