2016-08-15 2 views
0

У меня есть два поля - дата и OPR_DIST, мне нужно вычислить OPR_MILEAGEPopulate колонка на ПРЕДЫДУЩИЙ расчет в Teradata

Для OPR_MILEAGE - Если Null(?) и Zero в OPR_DIST затем ZERO для OPR_MILEAGE

Если OPR_DIST не равен нулю (например: 0.37), я проверяю Prev. запись (здесь его 0), следовательно, OPR_MILAGE соответствующая 0.37 является 0

Если OPR_DIST не равен нулю (например: 0.46), я проверяю Prev. запись (здесь его 0.37, который не равен нулю), следовательно, OPR_MILAGE, соответствующий 0.46 такой же, как 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. Любой свет на это может помочь.

ответ

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 
Смежные вопросы