2012-05-15 83 views
0

我有一个SQL服务器中包含3列的数据表。第一个是DateTime,第二个是浮动的。我试图计算特定时间间隔(即每隔15分钟)第2列和第3列之间差异的平均值。特定时间间隔的两列之间的差异

我设法找到下面的例子

SELECT * FROM dbo.data 
WHERE CAST(DateTime AS TIME) BETWEEN '14:00' and '14:30' 

但林不知道该如何现在calc下从上述查询结果的第二和第三列之间的区别。编号倾向于在t-sql中这样做,除非有人相信在c#中执行此操作会更合适。

感谢

编辑

2010-01-04 14:30:00.0000000 1.44377 1.44386 
2010-01-04 14:30:00.0000000 1.4438 1.44389 
2010-01-04 14:30:00.0000000 1.44377 1.44386 
2010-01-05 14:00:01.0000000 1.44258 1.44267 

喜欢的结果ID将如下

0.00009 ie 1.44386 - 1.44377 
0.00009  1.44389 - 1.4438 
0.00009  1.44386 - 1.44377 
0.00009  1.44267 - 1.44258 

回答

1

如果你只投日期列TIME你会与多个日期结束,我认为这不是你的意图(参见下面第一个查询的结果来说明我的意思)

DECLARE @Date DATETIME 
SELECT @Date = '05/15/2012 14:15' 
SELECT CAST(@Date AS TIME) 
SELECT @Date = '04/15/2012 14:15' 
SELECT CAST(@Date AS TIME) 

我想你想查询如下:

SELECT 
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date])/15), 0), -- Assuming [Date] is the DATETIME column, this will give you 15 minute intervals 
    AVG([Col2] - [Col3]) 
FROM 
    dbo.data 
GROUP BY 
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date])/15), 0) 

如果你要搜索一个特定的时间框架,只是迫使它在你的WHERE条款:

SELECT 
    AVG([Col2] - [Col3]) 
FROM 
    dbo.data 
WHERE 
    [Date] BETWEEN '05/15/2012 14:00' AND '05/15/2012 14:30' 
+0

我刚才看到你编辑。你能否解释你如何从数据中得出9的结果? – diaho

+0

1.44386 - 1.44377 = 0.00009(我只是纠正了原来的帖子,包括小数) –

+0

你的最后一个命令的工作原理,id与我的日期有误。谢谢你的帮助。 –