【发布时间】:2010-12-19 15:05:41
【问题描述】:
我正在尝试编写一个查询,该查询从 GPSReport 表中返回每个唯一设备的最新 GPS 位置。表中有 50 个设备,所以我只希望返回 50 行。
这是我目前所拥有的(不工作)
SELECT TOP(SELECT COUNT(DISTINCT device_serial) FROM GPSReport) * FROM GPSReport AS G1
RIGHT JOIN
(SELECT DISTINCT device_serial FROM GPSReport) AS G2
ON G2.device_serial = G1.device_serial
ORDER BY G2.device_serial, G1.datetime DESC
这将返回 50 行,但不会为每个 device_serial 返回唯一的行。它返回第一个设备的所有报告,然后返回第二个设备的所有报告,等等。
我试图在一个查询中做的事情可能吗?
【问题讨论】:
-
提供数据架构的相关部分可能会有所帮助。
-
行上有唯一的 id 吗?
-
对不起,该表有以下列:device_serial, datetime, triggerID, latitude, longitude, speed, address。 PK 由 device_serial、datetime、triggerID、latitude、longitude 列组成。
标签: sql sql-server sql-server-2005 tsql