sql server—在同一列但不同行中减去时间戳的sql

bogh5gae  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(216)

我们有一个sql表,机器在其中记录数据。为了更好地了解进程计时,我们希望减去时间戳,以便可以看到计时的变化。
有办法吗?下面是数据库中的表示例:

TS                          |Tag                                |Description        |Value
--------------------------------------------------------------------------------------------
2020-06-12 14:13:12.253     |DB26_Mp370_MachineStatus           |Machine Status     |Event 4
2020-06-12 14:12:56.250     |DB26_Mp370_MachineStatus           |Machine Status     |Event 3
2020-06-12 14:12:26.250     |DB26_Mp370_MachineStatus           |Machine Status     |Event 2
2020-06-12 14:11:06.253     |DB26_Mp370_MachineStatus           |Machine Status     |Event 1

结果应该是:

TS                          |Tag                                |Description        |Value      |TimeDiff
---------------------------------------------------------------------------------------------------------
2020-06-12 14:13:12.253     |DB26_Mp370_MachineStatus           |Machine Status     |Event 4    | 16.003
2020-06-12 14:12:56.250     |DB26_Mp370_MachineStatus           |Machine Status     |Event 3    | 30.000
2020-06-12 14:12:26.250     |DB26_Mp370_MachineStatus           |Machine Status     |Event 2    | 19.997
2020-06-12 14:11:06.253     |DB26_Mp370_MachineStatus           |Machine Status     |Event 1    |
5hcedyr0

5hcedyr01#

你问题的答案是 lag() . 但是,不同数据库的日期/时间函数不同。这个想法是这样的:

(ts -
 lag(ts) over (partition by tag order by ts)
)

但是,并非所有数据库都必须支持 - 在“时间戳”上,所以您可能需要调整它。

相关问题