Sql server 2012 指定ID的两行之间的时间差

Sql server 2012 指定ID的两行之间的时间差,sql-server-2012,Sql Server 2012,我试图找出两个ID相同的行之间的时间差(以秒为单位) SELECT DATEDIFF(second, pTimeStamp, TimeStamp), q.* FROM ( SELECT *, LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp FROM data ) q WHERE pTimeStamp IS NOT NULL 这是一

我试图找出两个ID相同的行之间的时间差(以秒为单位)

SELECT  DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM    (
            SELECT  *,
            LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp
            FROM    data
        ) q
WHERE   pTimeStamp IS NOT NULL 
这是一张简单的桌子

该表按myid和时间戳排序。我试图得到两行之间具有相同myid的总秒数

这是我想到的。此查询的唯一问题是,它计算所有记录的时间差,但不计算相同ID的时间差

SELECT  DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM    (
            SELECT  *,
            LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp
            FROM    data
        ) q
WHERE   pTimeStamp IS NOT NULL 
这是输出

我只希望输出以黄色突出显示

有什么建议吗


修复方法只是将带有分区的窗口缩小到具有相同ID的行:


修复方法只是将带有分区的窗口缩小到具有相同ID的行:


Add partition by IDTables不按任何东西排序,查询和结果集是。查询中没有按ID排序或分区的地方,因此结果也不是按ID排序的。@shawnt00谢谢!这就是我需要的。若你们把你们的评论写为答案,我将被接受为正确答案。查询中没有按ID排序或分区的地方,因此结果也不是按ID排序的。@shawnt00谢谢!这就是我需要的。如果你写下你的评论作为答案,我将被接受为正确答案。