Создать дату начала и дату окончания вне поля даты - PullRequest
0 голосов
/ 10 октября 2018

У меня есть таблица ниже

START_DT   END_DT    ID     NAME    ROLE       CUST_DT
6/22/18              1245   SMITH   CUST1    7/31/18 12:55:42
6/22/18              1245   SMITH   CUST1    7/31/18 13:56:50
6/22/18              1245   JACK    CUST2    7/31/18 13:56:50
5/1/18     5/30/18   5156   ROBERT  CUST1    5/01/18 12:25:25
5/1/18     5/30/18   5156   JOHN    CUST2    5/02/18 12:25:88

Мне бы хотелось получить вывод ниже

 ID     NAME   ROLE   CUST_START_DT        CUST_END_DT  
1245   SMITH   CUST1   7/31/18 12:55:42    7/31/18 13:56:49   
1245   SMITH   CUST1   7/31/18 13:56:50           
1245   JACK    CUST2   7/31/18 13:56:50    
5156   ROBERT  CUST1   5/01/18 12:25:25    5/02/18 12:25:87     
5156   JOHN    CUST2   5/02/18 12:25:88  

Я не уверен, с чего начать, возможно, я смогу выполнить функцию опережения / отставания

1 Ответ

0 голосов
/ 10 октября 2018

Попробуйте запрос ниже ожидаемого результата

create table start_end
(ID NUMBER,
NAME VARCHAR2(12),
ROLE VARCHAR2(10),
CUST_DT TIMESTAMP);


select id,name,role, CUST_DT CUST_START_DT, 
case when lead (CUST_DT) OVER ( partition by ID ORDER BY CUST_DT)=CUST_DT 
THEN NULL 
ELSE lead (CUST_DT) OVER ( partition by ID ORDER BY CUST_DT) - numToDSInterval( 1, 'second' )
END AS CUST_END_DT  
from start_end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...