在SQL Server中查找MAX值的时间

时间:2010-09-30 13:57:37

标签: sql-server max

我有一个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子句中不允许聚合。该查询应该如何正确编写?

1 个答案:

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