0

是否可以编写一个查询,从同一查询中检索到的一组最小值中找到最大值?

通过减小值(将所需的最大值留在列表顶部)来排序最小值很容易,但我很好奇是否可以构造一个只返回该值而不返回其他值的查询。

检索最小值的查询:

SELECT dbo.tblDevices.Status
, L.Device_id
, MIN(L.DateAndTime) As 'End Date'
FROM dbo.tblDeviceLocation AS L
JOIN dbo.tblDevices
ON L.Device_id = dbo.tblDevices.Device_id
GROUP BY L.Device_id, dbo.tblDevices.Status

我想找到这些分钟的最大值的行。我想过尝试使用子查询,但我认为它不起作用,因为它返回 N 最小值的行数。然后我想到了使用 COMPUTE,因为这可以被认为是一个小计,但这也不起作用,因为你不能对未分组的东西(L.DateAndTime)进行小计。

有什么想法吗?

*编辑:我刚刚看到这篇文章http://www.programmerinterview.com/index.php/database-sql/find-maximum-value-without-using-aggregate/从粗略的快速阅读中可能适用。当/如果我发现某些东西时,我会更新。

4

1 回答 1

0

您可以使用 ORDER BY 如果您使用的是 SQL-Server TOP 1 如果您使用的是 MySQL,那么您必须在查询结束时使用 LIMIT 1

SELECT TOP 1 dbo.tblDevices.Status
, L.Device_id
, MIN(L.DateAndTime) As 'End Date'
FROM dbo.tblDeviceLocation AS L
JOIN dbo.tblDevices
ON L.Device_id = dbo.tblDevices.Device_id
GROUP BY L.Device_id, dbo.tblDevices.Status
ORDER BY MIN(L.DateAndTime) DESC // order by max value
于 2013-03-07T18:24:10.157 回答