Консолидация записей, каждый столбец одинаковые данные, кроме одного столбца - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть несколько записей, которые выглядят так:

barcode:123, event:ASSIGN, event_datetime 9/23/2018 10am

barcode:123, event:CLOSE, event_datetime 9/23/2018 11am

barcode:123, event:ASSIGN, event_datetime 9/30/2018 10am

barcode:123, event:CLOSE, event_datetime 9/30/2018 11am

Я бы хотел объединить эти 4 записи в 2 записи, которые выглядели бы так:

barcode:123, event:close, event_start_datetime 9/23/18 10am event_end_datetime 9/23/2018 11am

barcode:123, event:close, event_start_datetime 9/30/2018 10am event_end_datetime 9/30/2018 11am

Я пробовалочевидные комбинации MIN/MAX, но поскольку все остальные столбцы являются идентичными данными (в основном они выглядят как дубликаты, за исключением одного столбца), он объединится в один столбец с комбо min / max.

Я что-то думал сrank() но звучит так, как будто все становится довольно сложно, и я мог бы использовать некоторую помощь.

1 Ответ

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

Не самый элегантный из ответов, но попробуйте следующее

select barcode, last_event_act, max(max_event_start), max(max_event_end) , event_datetime from 
(
select barcode, last_event_act, 
max(event_end) over (partition by to_char(event_end, 'mm/dd/YYYY')) max_event_end, 
max(event_start) over (partition by to_char(event_start, 'mm/dd/YYYY')) max_event_start, event_datetime
from 
(
select  barcode, last_value(EVENT) OVER (PARTITION BY to_char(EVENT_DATETIME, 'mm/dd/YYYY') ) as last_event_act, 
case 
    when event = 'CLOSE' then event_datetime 
    END 
 as event_end, 
 case 
     when event = 'ASSIGN' then event_datetime 
     END 
as event_start , max(to_char(event_datetime, 'mm/dd/yyyy')) over (partition by to_char(event_datetime, 'mm/dd/YYYY')) as event_datetime from barc
)
    )
    group by barcode, last_event_act, event_datetime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...