我有一张跟踪时间位置的表格。此表包含许多行,无法更改格式。 每个位置都插入一个id,实际位置和时间戳(日期时间)。位置本身插入一个连接的字符串,可以使用自定义函数转换为x / y坐标。
我想创建一个过程,并列出所有已知位置及其适当的时间戳。到目前为止没问题。但是也想创建一个输出列,指示位置和时间的差异。
澄清。我有什么:
Id | Timestamp | Foreign_Id | POS
----------------------------------------------------------
1 | 2011-02-20 00:00:00 | 2 | PositionAsString
----------------------------------------------------------
2 | 2011-02-20 00:00:05 | 2 | PositionAsString
----------------------------------------------------------
3 | 2011-02-20 00:00:15 | 2 | PositionAsString
----------------------------------------------------------
4 | 2011-02-20 00:00:37 | 2 | PositionAsString
位置的坐标可通过函数getX
和getY
获得,它们返回X和Y的浮点值。
位置差异将使用毕达哥拉斯定理计算,因为它只是2D。
我想要什么
Id | Timestamp | Foreign_Id | POS | DiffPos | Speed
---------------------------------------------------------------------------
1 | 2011-02-20 00:00:00 | 2 | PositionAsString | 0 | 0
---------------------------------------------------------------------------
2 | 2011-02-20 00:00:05 | 2 | PositionAsString | 20 | 4
---------------------------------------------------------------------------
3 | 2011-02-20 00:00:10 | 2 | PositionAsString | 10 | 2
---------------------------------------------------------------------------
4 | 2011-02-20 00:00:20 | 2 | PositionAsString | 10 | 1
所以现在我的问题是如何计算前一行的差异。 重要的是,由于表有很多行,因此执行任何无效的计算时,结果集会缩小到外键。
答案 0 :(得分:-1)
感谢您的建议,但由于这是复杂而低效的,我现在正在使用另一种解决方案。如上所述,我无法更改源表的格式。但是可能的是修改写入此跟踪表的触发器,以便在插入新行之前计算差异。
这当然不适用于现有条目,但这是可以接受的。