填充 Teradata 中 PRECEDING 计算的列
Posted
技术标签:
【中文标题】填充 Teradata 中 PRECEDING 计算的列【英文标题】:Populate column on PRECEDING calculation in Teradata 【发布时间】:2016-08-15 07:45:39 【问题描述】:我有两个字段——日期和OPR_DIST
,我需要计算OPR_MILEAGE
对于OPR_MILEAGE
– 如果Null(?)
和Zero
在OPR_DIST
中,那么ZERO
对于OPR_MILEAGE
如果 OPR_DIST
不为零(例如:0.37
),我会检查 Prev。记录(这里是 0)因此对应于0.37
的OPR_MILAGE
是0
如果 OPR_DIST
不为零(例如:0.46
),我会检查 Prev。记录(这里是0.37
,不为零)因此对应于0.46
的OPR_MILAGE
与OPR_DIST
相同,即0.46
所以在任何时候,如果我之前的记录是zero
,我当前的OPR_MILEAGE
值是zero
,否则OPR_DIST
。我使用的版本是 TD 13
DATE OPR_DIST OPR_MILEAGE
6/10/2016 ? ?
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0.37 0
6/10/2016 0.46 0.46
6/10/2016 0.47 0.47
6/10/2016 0 0
6/10/2016 0.32 0
6/10/2016 0.37 0.37
6/10/2016 0.47 0.47
6/10/2016 0.56 0.56
6/10/2016 0.32 0.32
6/10/2016 0.26 0.26
6/10/2016 0 0
6/10/2016 0.3 0
6/10/2016 0 0
6/10/2016 0.36 0
6/10/2016 0.25 0.25
6/10/2016 0.25 0.25
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0 0
6/10/2016 0.46 0
6/10/2016 0.24 0.24
6/10/2016 0 0
6/10/2016 0.33 0
6/10/2016 0 0
6/10/2016 0 0
我是 TD 的新手。对此的任何了解都会有所帮助。
【问题讨论】:
【参考方案1】:如果有确定顺序的列(可能是时间戳),则只需检查上一行的值:
CASE WHEN MAX(OPR_DIST)
OVER (ORDER BY ??? -- previous row
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) > 0
THEN OPR_DIST
ELSE 0
END
【讨论】:
以上是关于填充 Teradata 中 PRECEDING 计算的列的主要内容,如果未能解决你的问题,请参考以下文章
如何填充在 JavaFx Scene Builder 中设计的 fxml 文件中定义的 TableView