我有一个Table1表,其中包含TimeStamp和Humidity字段,其中包含以下值:
时间戳
'2010-09-29 11:05:29.6'
'2010-09-29 11:05:29.7'
'2010-09-29 11:05:29.8'
'2010-09-29 11:05:29.9'
'2010-09-29 11:05:30.0'
湿度
15.291
17.379
16.857
16.335
15.813
我想运行一个查询,在Humidity达到最大值的瞬间返回TimeStamp的值。在这个例子中,它将返回'2010-09-29 11:05:29.7',因为这是湿度是其最高值17.379。我也想限制时间范围,所以它会像
SELECT _TimeStamp from Table1
WHERE Humidity = MAX(Humidity) AND
_TimeStamp >= '2010-09-29 11:05:29.6' AND
_TimeStamp <= '2010-09-29 11:05:30.0'
但是这会产生一个错误,即在where子句中不允许聚合。该查询应该如何正确编写?
答案 0 :(得分:4)
SELECT TOP 1 _TimeStamp
from Table1
WHERE
_TimeStamp BETWEEN '2010-09-29 11:05:29.6' AND '2010-09-29 11:05:30.0'
ORDER BY Humidity DESC
或SELECT TOP 1 WITH TIES _TimeStamp
如果您想要恢复与最大湿度匹配的所有时间戳。
对于更复杂的分组方案,您应该调查排名函数,例如row_number