2008-11-21 31 views
0

任何人都有任何的洞察力,选择x数量的非连续日值的数据?日期是标准的SQL日期时间。因此,例如,我想选择最近5天的数据,但记录之间可能会有很多天差距,因此只需从5天前选择记录,而最近的记录不会这样做。选择X最近的非连续日数据数据

+0

在我看来,它要么真的很早,我还没有喝过咖啡,或者我需要更多的信息来帮助你。日期是唯一的参数吗?你能把这些日期发现的一切都归还吗? – GregD 2008-11-21 12:58:31

回答

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 
0

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

1)按降序排列

2选择日期(与时间成分截断))选择关闭前5

3)获得第五值

4)选择数据,其中所述日期时间> =第五值

像这样 “伪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 
) 
) 
+0

我有一种不好的感觉,认为这种机制最终效率会降低。 – Brian 2008-11-21 13:43:16

0

这应该做到这一点,从性能的角度看相当不错。你没有提到如何处理关系,所以你可以添加WITH TIES子句,如果你需要这样做。

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