【发布时间】:2022-01-21 23:04:10
【问题描述】:
如何根据常用值(开始和结束)删除重复数据
(时间是唯一的关键)
我的桌子是:
| Time | Data |
|---|---|
| 10:24:11 | Start |
| 10:24:12 | Result |
| 10:24:13 | Result |
| 10:24:14 | End |
| 10:24:15 | Start |
| 10:24:16 | Result |
| 10:24:17 | End |
我想在 Start 和 End 之间获得 Data: Result,当重复发生时,它与 MAX(TIME) 一致。像这样
我想要的结果:
| Time | Data |
|---|---|
| 10:24:11 | Start |
| 10:24:13 | Result |
| 10:24:14 | End |
| 10:24:15 | Start |
| 10:24:16 | Result |
| 10:24:17 | End |
我尝试重新排列数据,但似乎无法得到我想要的结果,有人可以就这个案例给出他们的建议吗?
更新
我最终没有使用@fredt 和@airliquide 建议的任何一种方法,因为我的HSQLDB 版本不支持该功能。
所以我所做的是,添加序列并使 Start = 1、Result = 2 和 End = 3。
| Sequence | Time | Data | Indicator |
|---|---|---|---|
| 1 | 10:24:11 | Start | 1 |
| 2 | 10:24:12 | Result | 2 |
| 3 | 10:24:13 | Result | 2 |
| 4 | 10:24:14 | End | 3 |
| 5 | 10:24:15 | Start | 1 |
| 6 | 10:24:16 | Result | 2 |
| 7 | 10:24:17 | End | 3 |
因此,我利用指标和序列仅获取最新结果。这样如果前一行是 2(这是结果),则将其删除。
我遵循的指南: 来自:Is there a way to access the "previous row" value in a SELECT statement?
select t1.value - t2.value from table t1, table t2
where t1.primaryKey = t2.primaryKey - 1
【问题讨论】: