Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择sql中时差最小的10行_Sql_Sql Server_Tsql - Fatal编程技术网

选择sql中时差最小的10行

选择sql中时差最小的10行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用SQLServer2005 您好,我有一个Users表,其中包含userID和registrationDate。我想选择两个注册日期之间的最短时间段,第一个日期是x,另一行是x+10行。我不介意游标,因为我将偶尔运行此查询 我将再次解释,我需要在10个用户注册之间的最短时间,以了解每个特定时间的注册边界有多高 谢谢如果您使用的是SQL Server 2005或更新版本,请尝试此查询: WITH T1 AS ( SELECT userID, reg

我正在使用SQLServer2005

您好,我有一个Users表,其中包含userID和registrationDate。我想选择两个注册日期之间的最短时间段,第一个日期是x,另一行是x+10行。我不介意游标,因为我将偶尔运行此查询

我将再次解释,我需要在10个用户注册之间的最短时间,以了解每个特定时间的注册边界有多高


谢谢

如果您使用的是SQL Server 2005或更新版本,请尝试此查询:

WITH T1 AS (
    SELECT
        userID,
        registrationDate,
        ROW_NUMBER() OVER (ORDER BY registrationDate) AS rn
    FROM Users
), T3 AS (
    SELECT
        T1.registrationDate AS interval_start,
        T2.registrationDate AS interval_end,
        T1.registrationDate - T2.registrationDate AS diff
    FROM T1
    JOIN T1 T2
   ON T1.rn = T2.rn + 5
)
SELECT TOP 1 interval_start, interval_end
FROM T3
ORDER BY diff

你说得对,你的答案正是我想要的,但由于英语是我的第三种口语,我无法正确地书写和提问。1900-01-01 00:04:00,,,这是我得到的答案。当最低注册日期为2008年,最高注册日期为今天时……您可以轻松修改查询,查看峰值出现的时间。查看我的更新查询。我的错,,,现在我知道“1900-01-01 00:04:00”代表什么了