Создать дату начала и окончания по датам в разных столбцах - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть пример таблицы ниже.Мой пример может иметь много cust_assgn_dts.

Цель состоит в том, чтобы создать цикл начала и окончания цикла для каждой даты.

ID CustID Start_DT   End_dt    Role       Cust_Assgn_dt     CustIds
 1  101   10/10/2018 11/13/2018 Primary   10/10/2018 8:35:24  98456
 1  101   10/10/2018 11/13/2018 Primary   10/10/2018 2:09:52  14687
 1  101   10/10/2018 11/13/2018 Primary   11/01/2018 2:10:42  15887
 1  101   10/10/2018 11/13/2018 Secondary 11/13/2018 9:12:00  15489
 1  101   10/10/2018 11/13/2018 Scheduler 10/10/2018 8:35:24  26987
 1  101   10/10/2018 11/13/2018 Scheduler 10/10/2018 2:09:52  26598

Ожидаемый результат: (Первый StartCycle всегда будет датой Start_dt). EndCycle будет днем ​​раньше следующей даты)

ID  StartCycle  EndCycle   Scheduler Primary Secondary Start_dt   End_dt
1   10/10/2018  10/31/2018  26598      14687           10/10/2018
1   11/01/2018  11/12/2018  26598      15887           10/10/2018
1   11/13/2018  12/31/9999  26598      15887   15489   10/10/2018 11/13/2018

Мой текущий запрос:

SELECT *
FROM (
  SELECT *
  FROM (
        SELECT 
        A.ID,
        A.CUSTID
        A.START_DT,
        A.END_DT,
        A.CUSTIDS,
        A.ROLE
        ,TRUNC(A.CUST_ASSGN_DT) AS CUST_ASSGN_DT
        ,DENSE_RANK() OVER (PARTITION BY ID,ROLE, TRUNC(CUST_ASSGN_DT) ORDER BY CUST_ASSGN_DT DESC) RNK
        FROM  A
        WHERE 1=1
        AND A.ID = 101
            )
  WHERE 1=1
  AND RNK = 1
  )
  PIVOT    
 (
  MAX(CUSTIDS)
 FOR ROLE IN ('SCHEDULER' AS SCHEDULER,'PRIMARY' AS PRIMARY,'SECONDARY' AS SECONDARY)
 )

Это дает мне роли на cust_assgn_dt, но НЕ дает мне никаких циклов.

Правильно ли я поступаю по этому поводу, или у меня должен быть другой подход?Я использую программное обеспечение PL / SQL, но пишу это в SQL оракула.

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