сравнить две последовательные строки таблицы терадата - PullRequest
0 голосов
/ 28 ноября 2018

Если у меня есть таблица типа

enter image description here

В моей таблице я хочу сравнивать каждые две строки подряд.Предположим, что employee_status имеет значение «yes», а после него «pro».Затем я хочу добавить еще один столбец и написать «проблема» в обеих строках и «нет проблем» в других строках.Например,

  • 1 да, проблема
  • 2, профессионал, проблема
  • 3, профессионал, нет проблем

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете использовать lead() / lag() - или эквивалент Teradata - и выражение case:

select t.*
       (case when employee_status = 'yes' and
                  max(employee_status) over (order by employee_no rows between 1 following and 1 following) = 'pro'
             then 'problem'
             when employee_status = 'pro' and
                  max(employee_status) over (order by employee_no rows between 1 preceding and 1 preceding) = 'yes'
             then 'problem'
             else 'no problem'
        end) as problem_col
from t;
...