Select 查询以获取两列中的唯一单元格

Select Query to Get Unique Cells in Two Columns

我有一个 SQL 服务器数据库,用于记录天气设备传感器数据。

table 看起来像这样:

Id DeviceId SensorId Value 1 1 1 42 2 1 1 3 3 1 2 30 4 2 2 0 5 2 1 1 6 3 1 26 7 3 1 23 8 3 2 1

在 return 中,查询应该 return 以下内容:

Id DeviceId SensorId Value 2 1 1 3 3 1 2 30 4 2 2 0 5 2 1 1 7 3 1 23 8 3 2 1

对于每个设备,传感器都应该是唯一的。即 DeviceId 和 SensorId 列中的值应该是唯一的(按行)。

如果我不够清楚,请见谅。

如果您不想按照您想要的结果对 Value 求和,那么您只想对每个 "DeviceId + SensorId" 组取一个 "arbitrary" 行:

WITH CTE AS
(
    SELECT Id, DeviceId, SensorId, Value,
           RN = ROW_NUMBER() OVER (PARTITION BY DeviceId, SensorId ORDER BY ID DESC)
    FROM dbo.TableName
)
SELECT Id, DeviceId, SensorId, Value
FROM CTE
WHERE RN = 1
ORDER BY ID

这 returns 每组 ID 最高的行。如果您想要不同的结果,您需要更改 ORDER BY ID DESC。演示:http://sqlfiddle.com/#!6/8e31b/2/0(你的结果)