是否可以编写一个查询,该查询从同一查询中检索到的一组最小值中查找最大值?
通过减少值(在列表顶部留下所需的最大值)来订购最小值很容易,但我很好奇是否可以构造一个只能返回该值的查询而不是其他任何内容。
检索最小值的查询:
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/,粗略的快速阅读可能适用。如果我发现了什么,我会更新。
答案 0 :(得分:0)
您可以使用ORDER BY,如果您使用的是SQL-Server TOP 1,那么您必须在查询结束时使用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