我需要一些帮助。
数据库设计:
设备表
ID | 固件 |
---|---|
1 | 1.1 |
2 | 1.2 |
3 | 1.1 |
4 | 1.1 |
5 | 1.2 |
已委托设备表
设备ID | 人员编号 |
---|---|
1 | 2 |
2 | 4 |
3 | 1 |
GPS 位置表
设备ID | 经度 | 纬度 | 记录日期 |
---|---|---|---|
1 | 2 | 3 | 2025-08-01 |
2 | 4 | 1 | 2025-08-01 |
3 | 1 | 3 | 2025-08-01 |
1 | 2 | 4 | 2025-08-01 |
2 | 4 | 2 | 2025-08-01 |
3 | 1 | 6 | 2025-08-01 |
1 | 2 | 6 | 2025-08-01 |
2 | 4 | 8 | 2025-08-01 |
3 | 1 | 9 | 2025-08-01 |
我想要的最终结果如下:
设备ID | 经度 | 纬度 | 记录日期 |
---|---|---|---|
1 | 2 | 3 | 2025-08-01 |
2 | 4 | 1 | 2025-08-01 |
3 | 1 | 3 | 2025-08-01 |
因此,这个想法是,表中可以有多个设备条目,但我只需要选择 RecordedDate 最高的条目。并且设备应该只在 CommissionedDevice 表中可用。
我尝试过什么?
我尝试了各种方法,例如 distinct、cte、group by,但到目前为止我都无法获得预期的结果。
请让我知道应该采取什么方法,我读到有类似排名的方法也可以提供帮助。
谢谢。
您可以使用 Row_Number 为每个设备 ID 的行编号。然后使用通用表表达式 (CTE) 仅显示 rn=1 的行。
小提琴
摆弄添加的时间