在Teradata中填充PRECEDING计算列

时间:2016-08-15 07:45:39

标签: teradata operator-precedence

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

对于OPR_MILEAGE - 如果Null(?)中的ZeroOPR_DIST,则ZERO的{​​{1}}

如果OPR_MILEAGE不为零(例如:OPR_DIST),我会检查上一页。记录(此处为0)因此与0.37对应的OPR_MILAGE0.37

如果0不为零(例如:OPR_DIST),我会检查上一页。记录(此处为0.46,不为零)因此0.37对应OPR_MILAGE0.46 OPR_DIST相同

所以,无论如何,如果我的前一条记录为0.46,我zero的当前值为OPR_MILEAGE,其他为zero。我正在使用的版本是TD 13

OPR_DIST

我是TD新手。对此有任何启示都有帮助。

1 个答案:

答案 0 :(得分:2)

如果有一列确定订单(可能是时间戳),您只需要查看上一行的值:

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