SQL选择具有最新日期/时间的唯一键字段

时间:2015-07-22 09:42:05

标签: sql-server unique

我的SQL Server数据库中有一个表,其中包含能量计的列表及其读数和日期/时间戳。

基本架构是PointID列,日期/时间列和值列。点ID是密钥,因此该表包含每个具有半小时值和时间戳的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中选择最近的行,但是在无需选择整个数据库的情况下无法有效地执行此操作,按desc排序并限制为1.

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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或更高版本,那么这样的事情应该会有用。