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

cs_*_*rik 4 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)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

列名无效'从事件中选择eventNum,其中eventNum =从Event'中选择MAX(eventNum).

我已经改变了100次,无法让它发挥作用.有帮助吗?

Tim*_*ter 6

你可以用 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))
Run Code Online (Sandbox Code Playgroud)

小提琴:http://www.sqlfiddle.com/#!3 / 3e9c8/17 /0