表的数据 按照日期是连续的
SELECT top 50 *
FROM EFIXDATA
WHERE (SITE_ID = '4001') AND (SAMPLING_DATETIME >= '2007-4-13 12:10:00')
ORDER BY SAMPLING_DATETIME DESC我的表里有很多记录,我如果这么查询的话  
2007-10-18 5:50:00 4001 0 082 362.7037 362.7037 362.7037   0411   2          4
2007-10-18 5:50:00 4001 0 081 1564.4034 1564.4034 1564.4034   0411   2          4
2007-10-18 5:50:00 4001 0 080 0 0 0   0411   2          4
2007-10-18 5:40:00 4001 0 084 0 0 0   0411   2          4
18号的数据就出来了。
我想得到的是这样的数据 日期>= '2007-4-13 12:10:00' 的还 接近这个日期的50条数据 。就是 '2007-4-13 12:20:00'   '2007-4-13 12:30:00' 
这样的数据 这个sql 语句该怎么写呢 
谢谢大家了

解决方案 »

  1.   

    日期 >=  '2007-4-13 12:10:00 ' 的还 接近这个日期的50条数据你这个接近是什么意思?取大于'2007-4-13 12:10:00 '的最小的50个?select top 50 * from 
    (select *,datediff(minute,'2007-4-13 12:10:00',SAMPLING_DATETIME) m from EFIXDATA WHERE (SITE_ID = '4001') AND (SAMPLING_DATETIME  >= '2007-4-13 12:10:00')) t
    order by m 
      

  2.   


    --没有看明白你的意思
    --如果是只查找>='2007-4-13 12:10:00 '的数据的话
    select top 50 * from FROM EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  >=  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME 把你的DESC 去掉就可以了
      

  3.   

    select top 50 * from FROM EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  <  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME
    union
    select top 50 * from FROM EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  >=  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME 
      

  4.   

    还是不是很明白--这是查找'2007-4-13 12:10:00 '前后各50条记录的
    select top 50 * from EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  <  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME desc
    union
    select top 50 * from EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  >=  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME--这是查找>='2007-4-13 12:10:00 '不足50条的时候 再加上<'2007-4-13 12:10:00 '的50条记录select top 50 * from(
    select top 50 * from EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  <  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME desc
    union
    select top 50 * from EFIXDATA 
    WHERE (SITE_ID =  '4001 ') AND (SAMPLING_DATETIME  >=  '2007-4-13 12:10:00 ') 
    ORDER BY SAMPLING_DATETIME) tbl
    order by tbl.SAMPLING_DATETIME
      

  5.   

    把 DESC 
    去掉就可以实现了吧,