Как проверить данные за предыдущие 3 месяца и следующие 3 месяца - PullRequest
0 голосов
/ 12 июня 2019

Я работаю с данными телекоммуникаций. Так что в основном у меня есть номера мобильных телефонов, и мне нужно иметь флаг (Да / Нет), который соответствует следующим условиям.

Отметьте «Да», если,

  1. Месяц счета должен составлять не менее 3 месяцев
  2. Total_Minutes_Used = 0
  3. Total_Data_Usage_MB = 0
  4. Случай, если Total_Minutes_Used = 0 ИЛИ Total_Data_Usage_MB = 0 в течение следующих 3 месяцев (для проверки на + - 3 месяца), иначе «Нет»

Пример данных

Mobile Number  Invoice_Month Total_Minutes_Used Total_Data_Usage_MB
------------- -------------- ------------------ -------------------
9112222210          01-2019     0                 0
9112222210          02-2019     0                 0
9112222210          03-2019     0                 45
9112222210          04-2019     0                 0
9112222211          01-2019     0                 0
9112222211          02-2019     0                 0
9112222211          03-2019     0                 0
9112222211          04-2019     0                 0
9112222212          01-2019     0                 0
9112222212          02-2019     0                 0
9112222212          03-2019     0                 0
9112222212          04-2019     0                 50

Ожидаемый результат

Mobile Number  Invoice_Month Total_Minutes_Used Total_Data_Usage_MB       Flag
------------- -------------- ------------------ -------------------       ----
9112222210          01-2019     0                 0      N
9112222210          02-2019     0                 0      N
9112222210          03-2019     0                 45     N
9112222210          04-2019     0                 0      N
9112222211          01-2019     0                 0      N
9112222211          02-2019     0                 0      N
9112222211          03-2019     0                 0      Y
9112222211          04-2019     0                 0      Y
9112222212          01-2019     0                 0      N
9112222212          02-2019     0                 0      N
9112222212          03-2019     0                 0      N
9112222212          04-2019     0                 50     N

Я пробовал с LEAD и LAG, но он не работает, как ожидалось.

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете попробовать это

select *, 
case when Invoice_Month <= DATEADD(mm, -3, GETDATE()) AND
          Total_Minutes_Used=0 AND
          Total_Data_Usage_MB=0 AND
          Total_Minutes_Used=0 OR Total_Data_Usage_MB=0 THEN "YES"
          ELSE "NO"
          END AS FLAG 
FROM TABLE_NAME;
...