обход записей в sql - PullRequest
       8

обход записей в sql

0 голосов
/ 25 мая 2018

Я хотел бы получить выходные данные для пересекающихся записей даты

> Data: Id Open_date Closed_Date
>       1  2016-01-01 2017-01-01
**>       1  2016-12-31 2018-21-01
>       1  2016-01-01 2018-01-01**
>       2  2017-01-01 2018-02-02
Here, you see the second & 3rd records are starting with date than the closed_Date of their previous records. Here i need to identify those type of records

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Похоже, вы хотите нормализовать медленно изменяющийся размерный тип 2 .Конечно, лучшим способом их обработки было бы использование временных таблиц с использованием синтаксиса Teradata или ANSI.

В Teradata есть хороший синтаксис для получения ожидаемого результата на основе типа данных Period,но есть возможность привести ваши даты начала / окончания к периоду:

SELECT id,
   -- split the period back into seperate dates
   Begin(pd) AS Open_date,
   End(pd) AS Closed_Date
FROM
 (
   SELECT NORMALIZE -- magic keyword :-)
      id, PERIOD(Open_date, Closed_Date) AS pd
   FROM tab
 ) AS dt
0 голосов
/ 25 мая 2018

Поскольку ваш вопрос не очень понятен, я предполагаю, что вы ищете минимальную дату открытия и максимальную дату закрытия.
Если это не требуется, отредактируйте вопрос, чтобы предоставить более подробную информацию.

select id, min(Open_date), max(Closed_Date)
from table
group by id
...