前两天的时间问题解决了,现在又出现一个问题;
数据库中有很多台设备,每台设备都在表中有个对应的字段nodeaddr,而且这些设备每3秒就采集一次数据,我现在要做的是查询所有设备5分钟之内的第一条数据;(表名是relrun)
我写的sql语句是:SELECT TOP 1 *
FROM realrun
WHERE data BETWEEN getdate()-0.003472 AND getdate() ORDER BY data desc
现在问题出来了,我只能查到5分钟之内的第一条数据,而并不是我想要的5分钟内所有设备的第一条数据,
假设我有100台设备,现在我要做的是查询100台设备的5分钟内离现在最近的一条数据,也就是100条数据,我上面的查询只查询到了一条最近的数据,并没有加上每台设备这个条件,怎么加啊?我做的是B/S软件,jsp、hibernate;求大家帮忙;
数据库中有很多台设备,每台设备都在表中有个对应的字段nodeaddr,而且这些设备每3秒就采集一次数据,我现在要做的是查询所有设备5分钟之内的第一条数据;(表名是relrun)
我写的sql语句是:SELECT TOP 1 *
FROM realrun
WHERE data BETWEEN getdate()-0.003472 AND getdate() ORDER BY data desc
现在问题出来了,我只能查到5分钟之内的第一条数据,而并不是我想要的5分钟内所有设备的第一条数据,
假设我有100台设备,现在我要做的是查询100台设备的5分钟内离现在最近的一条数据,也就是100条数据,我上面的查询只查询到了一条最近的数据,并没有加上每台设备这个条件,怎么加啊?我做的是B/S软件,jsp、hibernate;求大家帮忙;
如果没有这样的查询语句有没有可以实现这种查询结果的方法啊,见别人做的bcb里面有什么缓冲区之类的,jsp里面有什么办法吗?详细点说说啊,第一次做这种查询。大家都来帮帮忙!!谢啦
SELECT TOP 1 *
FROM realrun
WHERE data BETWEEN getdate()-0.003472 AND getdate()
GROUP BY nodeaddr
ORDER BY data desc
并且设备是两个字段决定的,上面只是举了个例子,
表中fzaddr和nodeaddr两个字段确定一台设备,
比如说 fzaddr=23 nodeaddr=3是一台设备
fzaddr=23 nodeaddr=4是一台设备
fzaddr=24 nodeaddr=3是一台设备
三台设备不是同一台,
只靠nodeaddr分组不行;
我试了试视图中用group by好像提示错误?
SELECT TOP 1 *
FROM realrun
WHERE data BETWEEN GETDATE()-0.003472 AND GETDATE()
GROUP BY nodeaddr,fzaddr
ORDER BY data DESC
[Microsoft][ODBC SQL Server Driver][SQL Server]列‘realrun.data’在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在GROUP BY子句中。
怎么回事啊?
SELECT max(data),*
FROM realrun
WHERE data BETWEEN GETDATE()-0.003472 AND GETDATE()
GROUP BY nodeaddr,fzaddr
最大的时间就是最晚的,这样可以,我测试过了