在 Teradata 的 PRECEDING 计算中填充列

Populate column on PRECEDING calculation in Teradata

我有两个字段——日期和 OPR_DIST ,我需要计算 OPR_MILEAGE

For OPR_MILEAGE – 如果 Null(?) and Zero in OPR_DIST then ZERO for OPR_MILEAGE

如果 OPR_DIST 不为零(例如:0.37),我检查 Prev。记录(此处为 0)因此对应于 0.37OPR_MILAGE0

如果 OPR_DIST 不为零(例如:0.46),我检查 Prev。记录(此处为 0.37,不为零)因此 OPR_MILAGE 对应于 0.46OPR_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的新手。对此有任何帮助。

如果有一列可以确定顺序(可能是时间戳),您只需检查前一行的值:

CASE WHEN MAX(OPR_DIST)
          OVER (ORDER BY ???    -- previous row 
                ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) > 0
     THEN OPR_DIST
     ELSE 0
END