选择X最近非连续几天的数据

时间:2008-11-21 12:50:13

标签: sql sql-server sql-server-2005 datetime

任何人都有任何关于选择x个非连续数天的数据的见解?日期是标准的sql datetime。例如,我想选择5个最近几天的数据,但记录之间可能存在很多天差距,所以只选择5天前的记录,而不是最近的记录。

3 个答案:

答案 0 :(得分:1)

遵循建议的方法Tony Andrews,这是一种在T-SQL中执行此操作的方法:

SELECT
  Value,
  ValueDate
FROM
  Data
WHERE
  ValueDate >= 
  (
    SELECT 
      CONVERT(DATETIME, MIN(TruncatedDate))
    FROM 
      (
         SELECT DISTINCT TOP 5 
           CONVERT(VARCHAR, ValueDate, 102) TruncatedDate
         FROM 
           Event
         ORDER BY 
           TruncatedDate DESC
      ) d
  )
ORDER BY
  ValueDate DESC

答案 1 :(得分:0)

我不知道SQL Server语法,但您需要:

1)按降序选择日期(时间成分被截断)

2)挑选前5名

3)获得第5个值

4)选择datetime> = 5th value

的数据

像这样的“伪SQL”:

select *
from data
where datetime >=
( select top 1 date
  from
  ( select top 5 date from
    ( select truncated(datetime) as date
      from data
      order by truncated(datetime) desc
    )
    order by date
  )
)

答案 2 :(得分:0)

从性能的角度来看,这应该做到并且相当不错。您没有提到如何处理关系,因此如果您需要,可以添加WITH TIES子句。

SELECT TOP (@number_to_return)
     *   -- Write out your columns here
FROM
     dbo.MyTable
ORDER BY
     MyDateColumn DESC