日期:2014-05-18  浏览次数:20390 次

问个sql 语句 这个语句怎么查询
表的数据 按照日期是连续的
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 语句该怎么写呢 
谢谢大家了

------解决方案--------------------
SQL code
日期 >=  '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

------解决方案--------------------
还是不是很明白
SQL code
 
--这是查找'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


------解决方案--------------------
把 DESC 
去掉就可以实现了吧,