我有一个记录器表,其中包含以下字段:timestamp,point_id,value。 外部应用程序正在使用此表,每次point_id的值发生更改时,应用程序都会使用timestamp,point_id和value写入记录。
我想创建一个查询,返回几个point_id的值(例如 - 'point_id ='AA1'或point_id ='AA2')及其在时间戳窗口中的值('其中@start和@end之间的时间戳) “)。 任何人都可以帮我构建一个SQL语句来运行这个查询吗?
答案 0 :(得分:0)
您正在寻找以下内容吗?
DECLARE @startDatetime DATETIME = '2018-03-01 10:00:00'
DECLARE @endDatetime DATETIME = '2018-03-20 12:00:00'
IF OBJECT_ID('tempdb..#Points') IS NOT NULL
DROP TABLE #Points
CREATE TABLE #Points (point_id VARCHAR(100) PRIMARY KEY)
INSERT INTO #Points (point_id)
VALUES
('AA2'), -- your point IDs
('A10')
SELECT
L.point_id,
L.timestamp,
L.value
FROM
LoggerTable AS L
INNER JOIN #Points AS P ON L.point_id = P.point_id
WHERE
L.timestamp BETWEEN @startDatetime AND @endDatetime
ORDER BY
L.point_id,
L.timestamp