2014-04-02 2 views
0

У меня есть таблица вроде этого:Oracle SQL сводной таблицы запроса

time | ID | Page 
9:30 | 1 | name1 
9:30 | 1 | name2 
9:30 | 1 | name3 
9:30 | 2 | name4 
9:30 | 2 | name5 
7:30 | 3 | name1 

И я хочу, чтобы использовать сводную таблицу, чтобы изменить таблицу, как показано ниже:

time | ID | Page1 | Page2 | Page3 
9:30 | 1 | name1 | name2 | name3 
9:30 | 2 | name4 | name5 | null 
7:30 | 3 | name1 | null | null 

пожалуйста, помогите мне с этим. Thx

+0

Какое максимальное количество страниц? до? –

+0

Привет, Да Макс до страницы3 –

ответ

2

Здесь вы:

with w(time, ID, Page) as 
(
    select '9:30', 1, 'name1' from dual 
    union all 
    select '9:30', 1, 'name2' from dual 
    union all 
    select '9:30', 1, 'name3' from dual 
    union all 
    select '9:30', 2, 'name4' from dual 
    union all 
    select '9:30', 2, 'name5' from dual 
    union all 
    select '7:30', 3, 'name1' from dual 
) 
select * 
from 
(
    select w.time, w.id, w.page, row_number() over (partition by w.time, w.id order by w.page) rnk 
    from w 
) 
pivot (max(page) for rnk in (1 as page1, 2 as page2, 3 as page3)) 
order by 1, 2 
; 

Это дает:

TIME ID PAGE1 PAGE2 PAGE3 
7:30 3  name1   
9:30 1  name1 name2 name3 
9:30 2  name4 name5  
+0

Спасибо !!! @ Emmanuel –

Смежные вопросы