数据库表结构如下rundata表:
id datetime value
1 2009-08-06 08:30 20
1 2009-08-06 08:32 23
1 2009-08-06 08:34 22
1 2009-08-06 08:36 25
1 2009-08-06 08:39 29
1 2009-08-06 08:40 23
1 2009-08-06 08:44 30
1 2009-08-06 08:47 31
1 2009-08-06 08:51 34
1 2009-08-06 08:53 36
2 2009-08-06 08:32 40
2 2009-08-06 08:34 42
2 2009-08-06 08:37 43
2 2009-08-06 08:39 45
2 2009-08-06 08:45 47
1 2009-08-07 08:30 30
1 2009-08-07 08:34 32
1 2009-08-07 08:37 33
1 2009-08-07 08:41 34
1 2009-08-07 08:44 36
1 2009-08-07 08:48 37
1 2009-08-07 08:50 39要求需要同时满足如下3个条件:
1. 按id来搜索前一天的所有结果,如搜索8.6日id=1的所有数据;
2. 以条件1为前提,以5分钟为间隔取得所有数据,如08:30,08:35,08:40,表中不足整5分钟的取最临近的时间数据;
3. 将搜索结果存在临时表或view中。
id datetime value
1 2009-08-06 08:30 20
1 2009-08-06 08:32 23
1 2009-08-06 08:34 22
1 2009-08-06 08:36 25
1 2009-08-06 08:39 29
1 2009-08-06 08:40 23
1 2009-08-06 08:44 30
1 2009-08-06 08:47 31
1 2009-08-06 08:51 34
1 2009-08-06 08:53 36
2 2009-08-06 08:32 40
2 2009-08-06 08:34 42
2 2009-08-06 08:37 43
2 2009-08-06 08:39 45
2 2009-08-06 08:45 47
1 2009-08-07 08:30 30
1 2009-08-07 08:34 32
1 2009-08-07 08:37 33
1 2009-08-07 08:41 34
1 2009-08-07 08:44 36
1 2009-08-07 08:48 37
1 2009-08-07 08:50 39要求需要同时满足如下3个条件:
1. 按id来搜索前一天的所有结果,如搜索8.6日id=1的所有数据;
2. 以条件1为前提,以5分钟为间隔取得所有数据,如08:30,08:35,08:40,表中不足整5分钟的取最临近的时间数据;
3. 将搜索结果存在临时表或view中。
解决方案 »
- JSP做提交,第一次提交为空,第二次提交成功
- cK editor 实现 图片上传功能 Java
- jfreechart 精度问题
- 如何使用POI往excel中插入行,在线等待中...
- 我的access只能select不能插入了?
- 有一段javabean的代码,我把他放在了JSP中,我想使System.out.println(...)改成out.println(....)但出错了,我该如何做才能使用才能out.p
- easyUI这个效果是怎么实现的?
- 哪里有免费的WEBLOGIC下载?
- 如何检测客户端机器是否安装了某种应用程序或者插件,并提示客户端进行下载
- 怎么判断jdbc中某条sql有没有返回纪录
- 三列布局的页面,左右侧宽度固定,中间内容动态调整
- 一个关于EL表达式外键的问题
id datetime value
1 2009-08-06 08:30 20
1 2009-08-06 08:40 23
1 2009-08-06 08:44 30
1 2009-08-06 08:51 34
这样每5分钟取一个数据点,表中不足整5分钟的取最临近的时间数据。
ID INT,
[DATETIME] DATETIME,
[VALUE] INT
)
INSERT INTO @T
SELECT 1,'2009-08-06 08:30', 20 UNION ALL
SELECT 1 ,'2009-08-06 08:32', 23 UNION ALL
SELECT 1 ,'2009-08-06 08:34', 22 UNION ALL
SELECT 1 ,'2009-08-06 08:36', 25 UNION ALL
SELECT 1 ,'2009-08-06 08:39', 29 UNION ALL
SELECT 1 ,'2009-08-06 08:40', 23 UNION ALL
SELECT 1 ,'2009-08-06 08:44', 30 UNION ALL
SELECT 1 ,'2009-08-06 08:47', 31 UNION ALL
SELECT 1 ,'2009-08-06 08:51', 34 UNION ALL
SELECT 1 ,'2009-08-06 08:53', 36 UNION ALL
SELECT 2 ,'2009-08-06 08:32', 40 UNION ALL
SELECT 2 ,'2009-08-06 08:34', 42 UNION ALL
SELECT 2 ,'2009-08-06 08:37', 43 UNION ALL
SELECT 2 ,'2009-08-06 08:39', 45 UNION ALL
SELECT 2 ,'2009-08-06 08:45', 47 UNION ALL
SELECT 1 ,'2009-08-07 08:30', 30 UNION ALL
SELECT 1 ,'2009-08-07 08:34', 32 UNION ALL
SELECT 1 ,'2009-08-07 08:37', 33 UNION ALL
SELECT 1 ,'2009-08-07 08:41', 34 UNION ALL
SELECT 1 ,'2009-08-07 08:44', 36 UNION ALL
SELECT 1 ,'2009-08-07 08:48', 37 UNION ALL
SELECT 1 ,'2009-08-07 08:50', 39 DECLARE @ID INT
SET @ID=1SELECT IDENTITY(INT,1,1) 'TEMPID',* INTO #TEMP FROM @T
WHERE ID=@ID AND DATEDIFF(DAY,[DATETIME],GETDATE())=3--这里是与当前日期相关天数
--SELECT * FROM #TEMP
--梁哥作品,版权没有,翻版不究
declare @begin_date datetime,@end_date datetime;
select @begin_date=MIN([DATETIME]),@end_date=MAX([DATETIME]) FROM #TEMP;with liang as
(
select @begin_date AS date
union all
select dateadd(mi,5,date) from liang
where dateadd(mi,5,date) <=@end_date
)
--鸭子作品,版权没有,翻版不究
,GUGUDA AS
(select T1.DATE,T2.TEMPID,DATEDIFF(MI,T2.[DATETIME],T1.DATE) 'COL1'
from liang T1
INNER JOIN #TEMP T2 ON T2.[DATETIME]<=T1.DATE
)
SELECT ID,[DATETIME],[VALUE] FROM #TEMP T1 WHERE EXISTS(
SELECT TEMPID FROM GUGUDA G1
WHERE NOT EXISTS(SELECT 1 FROM GUGUDA G2 WHERE G2.DATE=G1.DATE AND G2.COL1<G1.COL1) AND G1.TEMPID=T1.TEMPID)
DROP TABLE #TEMP
/*
1 2009-08-06 08:30:00.000 20
1 2009-08-06 08:34:00.000 22
1 2009-08-06 08:40:00.000 23
1 2009-08-06 08:44:00.000 30
1 2009-08-06 08:47:00.000 31
*/
第二个的话 你最主要的是 获得一个数据 比如说:8:43 你要确定他是属于8:40还是8:45
第三个就更简单了 用视图就ok了
该问题在DB2上可以搞定了,但sybase的函数和复杂查询与DB2都不同,资料也少啊。