【发布时间】:2017-03-02 06:45:39
【问题描述】:
我有一个表,其中包含许多包含时间序列数据的标签 示例:
TagName Value DateTime Quality
Tag1 75 09/24/2015 01:05:10 192
Tag1 76.5 09/24/2015 01:05:20 192
Tag1 75 09/24/2015 01:05:40 192
Tag1 74.5 09/24/2015 01:06:00 192
Tag2 75 09/24/2015 01:05:10 192
Tag2 76.5 09/24/2015 01:05:20 192
Tag2 75 09/24/2015 01:05:40 192
Tag2 74.5 09/24/2015 01:06:00 192
我需要查询StartDate和EndDate之间的标签(多个)和一个间隔(5分钟/15分钟)
此查询有效:
SELECT * FROM
(SELECT [DateAndTime],[TagName],[Val],row_number()over(partition by datepart(minute, [DateAndTime])order by [DateAndTime] ) as "rn"
FROM [FloatTable] WHERE
([DateAndTime] BETWEEN @StartDateTime AND @EndDateTime) AND
([TagName] IN (@TagName)) AND
( (DATEPART("n",[DateAndTime]) % @IntervalInMins = 0) )) x
WHERE rn = 1
带参数:
- 间隔:5分钟
- 标签:'Tag1'
- 开始日期时间:'2014-02-26 09:00:00'
- EndDateTime: '2014-02-26 11:00:00'
查询结果:
TagName Value DateTime Quality
Tag1 75 09/24/2015 01:05:10 192
Tag1 76.5 09/24/2015 01:10:10 192
Tag1 75 09/24/2015 01:16:40 192
但这只有在我们一次查询 1 个标签时才有效。通常我们要查询标签列表。如果我查询标签列表“Tag1,Tag2”,则查询只给出 Tag1 的结果。请指教。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。