sqlserver查询数据库某个站点最后一次输入数据的最大值和最小值

sqlserver查询数据库某个站点最后一次输入数据的最大值和最小值
station表中有站点编码(stationbm),站点名称(stationname),站点编号(snum)
device表中有设备编码(devicebm),站点编号(snum与station snum对应),设备名称(devicename)
deviceTemper表中有设备编码(devicebm与device devicebm对应),温度(temvalue),时间(gtime),主键id(tid) 现在想查询出某个站点最后一条输入数据的最大温度和最小温度 本来sql已经写出 但是当数据一多查询时间就比较长 求教,
声声忘了声声难了 1年前 已收到1个回答 举报

梧桐2 幼苗

共回答了22个问题采纳率:90.9% 举报

有点疑问啊.
deviceTemper表中有设备编码(devicebm与device devicebm对应),温度(temvalue),时间(gtime),主键id(tid)
现在想查询出某个站点最后一条输入数据的最大温度和最小温度
这个 deviceTemper表 只有一个 温度列啊.
如果是 最后一条输入数据,只有一条的话,那应该分不出 最大最小啊.
你是不是想查询 某个站点下面,所有设备 的 最后一条数据.
在多个设备的数据里面,找 最大与最小啊?
例如 站点 A,下面有 5个设备 A01,A02,A03,A04,A05
查询这5个设备的最后一条输入数据,然后在这5行里面,找个最大与最小?

1年前 追问

7

声声忘了声声难了 举报

嗯,是你说的这个样子的

举报 梧桐2

WITH myCTE AS ( SELECT * FROM deviceTemper WHERE devicebm IN ( SELECT devicebm FROM device WHERE snum = '外部指定站点编号' ) ), newestCTE AS ( SELECT * FROM myCTE main WHERE NOT EXISTS ( SELECT 1 FROM myCTE sub WHERE main.devicebm = sub.devicebm AND main.gtime < sub.gtime ) ) SELECT MAX(temvalue) AS [最大温度], MIN(temvalue) AS [最小温度] FROM newestCTE; SQL Server 2005 以上版本的 没环境, 性能就不确定了......
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 1.495 s. - webmaster@yulucn.com