Ведро старения в запросе SQL - PullRequest
       0

Ведро старения в запросе SQL

0 голосов
/ 11 сентября 2018

У меня есть таблица с идентификатором члена, а также LM_Conversion_date и retired_date.Мне удалось получить разницу между двумя датами, но теперь я хотел бы иметь стареющее ведро и отразить тот номер членства, который попадает под это ведро.Вот мой пример таблицы и как я хочу видеть данные,

Member_no   LM_Conversion_date  Retired_date    Date_difference
100026            08/12/2017    31/12/2017      23
100114            31/08/2017    31/08/2017      0
100620            15/09/2017    30/09/2017      15
100726             10/01/2017   31/12/2016     -10

Я хочу, чтобы вывод был

All negative      0-15      15-30     >30
100726            100114    100026   
                  100620        

Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете сделать это, используя условное агрегирование:

select max(case when grp = '<0' then member_no end) as all_negative,
       max(case when grp = '<=15' then member_no end) as [0-15],
       max(case when grp = '<=30' then member_no end) as [15-30],
       max(case when grp = '>30' then member_no end) as [>30]      
from (select t.*, v.grp,
             row_number() over (partition by grp order by member_no) as seqnum
      from t cross apply
           (values (case when date_difference <= 0 then '<0'
                         when date_difference <= 15 then '<=15'
                         when date_difference <= 30 then '<=30'
                         else '>30'
                    end)
           ) v(grp)
      ) t
group by seqnum
order by seqnum;

Подзапрос в основном перечисляет членов в каждой группе.Они агрегируются в отдельные строки путем агрегации.

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