Интересные логи c решаются в терадате SQL - PullRequest
0 голосов
/ 25 февраля 2020

Data and question

На изображении цель - высший расчет лет с момента последнего DX. Уровень года, который мы хотим вычислить через число лет с момента обнаружения DX. Например, в 2014 году был dx для идентификатора 1, поэтому в 2015,2016 и 2017 годах мы вводим значение в порядке возрастания года. мы находим еще один DX в 2017 году, поэтому в следующем году мы заполняем 1. тот же цикл запускается в следующем ID

Идея состоит в том, чтобы реализовать эту логику c в Teradata SQL Может кто-нибудь помочь, как это могло бы быть сделано?

1 Ответ

0 голосов
/ 25 февраля 2020

Вы можете получить наибольшее значение для самого последнего значения "DX", используя функции analyti c:

select t.*,
       max(case when code = 'DX' then date end) over
           (partition by id
            order by date
            range between unbounded preceding and 1 preceding
           ) as prev_dx
from t;

Я не знаю, как преобразовать это значение в "годы". Формат даты не имеет смысла для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...