2015-05-02 3 views
-3
DAY  PERIOD  YEAR SEC  TeacherID 

Monday   1  3  C   100010 
Monday   2  3  C   100011 
Tuesday  1  3  C   100011 
Tuesday  2  3  C   100010 


Display for TeacherID 100010 

Period  Monday  Tuesday 
    1   3,C   
    2      3,C 

Помогите мне или исправьте меня, если вы считаете, что я ошибаюсь.Как отображать различные значения столбцов в разные столбцы и значения разных столбцов в одном столбце?

ответ

0

Чтобы получить этот выход можно использовать pivot оператор:

select * from 
    (select day, period, year||','||sec ys from test where teacherid = '100010') 
pivot (max(ys) for day in ('Monday' as Monday, 'Tuesday' as Tuesday)) 

SQLFiddle demo

Это работает Oracle 11g версии. Для более старых версий вы можете использовать этот синтаксис:

select period, 
    max(case when day='Monday' then year||','||sec end) Monday, 
    max(case when day='Tuesday' then year||','||sec end) Tuesday 
    from test 
    where teacherid = '100010' 
    group by period order by period 

SQLFiddle demo

+0

Спасибо. Я думаю, это будет хорошо. –

+0

Надеюсь. И если вы хотите добавить учителей для вывода (вы не упомянули об этом), просто добавьте 'teacherid' в список полей в подзапросе. –

0

Если я правильно Вас понял, что вам нужно что-то вроде этого:

select period, 
case day 
when 'Monday' then year||sec 
else '' 
end "Monday", 
case day 
when 'Tuesday' then year||sec 
else '' 
end "Tuesday" 
from test_tbl