Oracle: групповые значения в один ряд - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть разные события, хранящиеся в таблице

   RESERVATION      EVENT                       DATE 
    --------------------------------------------------------------
    111             CHECK IN                2020-02-01 00:00
    111             CHECK OUT               2020-02-01 10:30
    111             DOCUMENT RECEPTION      2020-02-03 14:15

Мне нужно сгруппировать все данные в одну строку, например,

   RESERVATION  CHECK IN            CHECK OUT           DOCUMENT RECEPTION
    -------------------------------------------------------------------------
    111         2020-02-01 00:00    2020-02-01 10:30    2020-02-03 14:15        

THX

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Вы хотите использовать pivot :

select * from 
(
  select reservation, event, dt 
  from test
)
pivot( max(dt) for event in ('CHECK IN','CHECK OUT','DOCUMENT RECEPTION') )

Вот пример sqlfiddle .

0 голосов
/ 12 февраля 2020

Другой способ - использовать условную агрегацию следующим образом:

Select reservation,
       Max(case when event = 'CHECK IN' then dt end) as check_in_dt,
       Max(case when event = 'DOCUMENT RECEPTION' then dt end) as document_reception_dt,
       Max(case when event = 'CHECK OUT' then dt end) as check_out_dt
  From your_table
Group by reservation

Cheers !!

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