从记录器表构建SQL查询

时间:2018-03-04 07:14:31

标签: sql-server pivot

我有一个记录器表,其中包含以下字段:timestamp,point_id,value。 外部应用程序正在使用此表,每次point_id的值发生更改时,应用程序都会使用timestamp,point_id和value写入记录。

我想创建一个查询,返回几个point_id的值(例如 - 'point_id ='AA1'或point_id ='AA2')及其在时间戳窗口中的值('其中@start和@end之间的时间戳) “)。 任何人都可以帮我构建一个SQL语句来运行这个查询吗?

1 个答案:

答案 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