当多个列和行值更改时减去时间戳

时间:2016-03-17 13:18:47

标签: timestamp row teradata subtraction col

我有这个数据集。第1,2,3,4和5列。我想仅在看到交易类型" A1"时才减去后续交易之间的时间。 。首先应该检查是否有相同的ID,指标已经改变。如果有,那么我想要指标1的A1和指标2的A1之间的减法。 如果指标未更改,请查看ID并查看是否已更改。如果有,则找到紧邻的下一个A1并减去时间。

我想在新列中显示结果,如上所示(TRANSACTION TIME,以分钟为单位)。而且,我正在使用Teradata SQL Assistant。

enter image description here

1 个答案:

答案 0 :(得分:1)

说实话,我没有得到这个场景。 - 搜索下一个TXN的密钥(列)是什么?是否要搜索下一个或最后一个TXN?

没关系:

1)可以通过OLAP函数找到最后/前一条记录,当使用1条记录作为窗口时,只需使用MIN / MAX

MAX(COL1) OVER (PARTITION BY COL_Key1, COL_Key2 ORDER BY COL_Timestamp ASC ROWS 1 PRECEDING) as COL1_Preceding

检查:http://www.info.teradata.com/HTMLPubs/DB_TTU_15_10/index.html#page/SQL_Reference/B035_1145_151K/Ordered_Analytical_Functions_stub.html

2)if if then可以通过CASE WHEN xxx那么xxx [当yyy那么yyy] [ELSE zzz] END

检查:http://www.info.teradata.com/HTMLPubs/DB_TTU_15_10/index.html#page/SQL_Reference/B035_1145_151K/Case_Expressions_stub.html#ww3_28_1