我有一个包含电动马达数据的表格,格式如下:数据历史查询
DATE(DateTime)|标签名(VARCHAR(50)|缬氨酸(浮点型)|
2009-11-03 17:44:13.000 | Motor_1 | 123.45
2009-11-04 17:44:13.000 | Motor_1 | 124.45
2009-11-05 17:44:13.000 | Motor_1 | 125.45
2009-11-03 17:44:13000 | Motor_2 | 223.45
2009-11-04 17:44:13.000 | Motor_2 | 224.45
每台电机的数据都是每天插入的,因此将会有31台Motor_1和31台电机等。我们这样做是为了让我们能够在控制系统显示屏上进行设计。 我正在使用视图来提取上个月最大值val和上个月最小值val。 这个月的数据也一样。然后我加入两者并计算差异 以获得该月的实际运行小时数。 “Val”是不可重复的 从PLC(控制器)累计。这是我最近几个月查询最大 值:
SELECT TagName, Val AS Hours
FROM dbo.All_Data_From_Last_Mon AS cur
WHERE (NOT EXISTS
(SELECT TagName, Val
FROM dbo.All_Data_From_Last_Mon AS high
WHERE (TagName = cur.TagName) AND (Val > cur.Val)))
这是我的查询最近几个月最大 值:
SELECT TagName, Val AS Hours
FROM dbo.All_Data_From_Last_Mon AS cur
WHERE (NOT EXISTS
(SELECT TagName, Val
FROM dbo.All_Data_From_Last_Mon AS high
WHERE (TagName = cur.TagName) AND (Val < cur.Val)))
这是计算的差异,缓慢运行了一下查询:
SELECT dbo.Motors_Last_Mon_Max.TagName, STR(dbo.Motors_Last_Mon_Max.Hours - dbo.Motors_Last_Mon_Min.Hours, 12, 2) AS Hours
FROM dbo.Motors_Last_Mon_Min RIGHT OUTER JOIN
dbo.Motors_Last_Mon_Max ON dbo.Motors_Last_Mon_Min.TagName = dbo.Motors_Last_Mon_Max.TagName
我知道还有更好的办法。最终,我只需要上个月总计和本月总计。任何帮助,将不胜感激。
在此先感谢
我认为这是我需要的。我会再测试一下。 万分感谢! –
您发布的第一部分帮助了很多。我也会尝试下一部分。 再次感谢 –