У меня есть пример набора данных ниже:
Я БЫ | Роль | ДАТА НАЧАЛА | ДАТА ОКОНЧАНИЯ |
---|---|---|---|
1 | А | 2022-02-01 | 2022-02-03 |
1 | А | 2022-02-03 | 2022-02-10 |
1 | А | 2022-02-10 | 9000-12-31 |
2 | Б | 2022-02-01 | 2022-02-03 |
2 | А | 2022-02-03 | 2022-02-04 |
2 | Б | 2022-02-04 | 2022-02-11 |
Я хочу сгруппировать их по ID, ROLE, START_DATE и END_DATE. Так это выглядит ниже: Икс
Я БЫ | Роль | ДАТА НАЧАЛА | ДАТА ОКОНЧАНИЯ |
---|---|---|---|
1 | А | 2022-02-01 | 9000-12-31 |
2 | Б | 2022-02-01 | 2022-02-03 |
2 | А | 2022-02-03 | 2022-02-04 |
2 | Б | 2022-02-04 | 2022-02-11 |
Как я могу этого добиться?
Спасибо
Простая задача для NORMALIZE от Teradata:
with cte as
( -- works on PERIODs only
select NORMALIZE -- combine overlapping periods
ID, Role, period(START_DATE, END_DATE) as pd
from mytable
)
-- split period back into start/end
select ID, Role, begin(pd) as START_DATE, end(pd) as END_DATE
from cte
Идеальный! Отлично, чтобы изучить эту функцию
Какую базу данных вы используете? пометить правильную базу данных.