SQL 选择最近 date/time 的唯一关键字段

SQL selecting unique key field with most recent date/time

我的 SQL 服务器数据库中有一个 table,其中包含一个电表列表及其读数和一个 date/time 标记。

基本架构是一个 PointID 列、一个 Date/Time 列和一个值列。点 ID 是关键,因此 table 包含每个带有半小时值和时间戳的 PointID 的多个条目。

For example:

PointID, Time, Value

132237      2015-06-19 22:00:00.000 46
132237      2015-06-19 22:15:00.000 52
132237      2015-06-19 22:30:00.000 64
154433      2015-06-19 22:45:00.000 41
154433      2015-06-19 23:00:00.000 44
154433      2015-06-19 23:15:00.000 45
154433      2015-06-19 23:30:00.000 47

我正在尝试从每个唯一的 PointID 向 select 最近的行编写查询,但是我无法有效地执行此操作,而不必 select 整个数据库,按 desc 排序和限制1.

有人能帮忙吗?

谢谢

;WITH CTE AS (
  SELECT PointID, Time, Value, ROW_NUMBER() OVER (PARITITION BY PointID ORDER BY Time DESC) AS RN
FROM <YOUR TABLE>
)
SELECT PointID, Time, Value
FROM CTE
WHERE RN = 1

我没想到 - 如果使用 SQL Server 2005 或更高版本,这样的事情应该可行。

您可以使用 SQL 中的 MAX()GROUP BY 来获取它。

SELECT POINTID,MAX(VALUE)
FROM table
GROUP BY POINTID