planetz Ответов: 0

Pivot в oracle 10g для строки


Всем Привет,

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

name  |  sub  |  week|status
stu1  |  math |  1  |  yes
stu1  |  eng  |  1  |  
stu1  |  sci  |  1  |  no
stu1  |  math |  2  |  yes
stu1  |  eng  |  2  |  
stu1  |  sci  |  2  |  yes



Мне нужен такой стержень, как:

name  |  sub  |  week1 |  week2
stu1  |  math |  yes  |  yes
stu1  |  eng  |      |  
stu1  |  sci  |  no  |  yes


Мне нужен этот выход как для 11g, так и для 10g (что-то, что работает для обоих).

Что я уже пробовал:

У меня было требование того же вывода, только вместо " да " и " нет " были цифры
Поскольку сервер имеет 10g, мой запрос был примерно таким::

select name, sub,
sum(case when week=1 then case when sub='math' then status
                               when sub='eng' then status
                               when sub='sci' then status end end) as week1,
sum(case when week=2 then case when sub='math' then status 
                               when sub='eng' then status 
                               when sub='sci' then status end end) as week2
from(query for table1)
group by name, sub;


Но здесь агрегатная функция не работает со строками " да " или "нет".
Пожалуйста, помогите!!

CHill60

У вас нет колонки под названием Оценка.

planetz

да. Этот запрос-старый, со старой таблицей. Старая таблица такая же, как и таблица 1. Но вместо столбца "статус" (varchar2) это был столбец "оценка" (число).

planetz

функция sum не будет работать со статусом, который является строкой, поэтому я не могу найти способ сгруппировать столбцы name и sub.

Richard Deeming

Чего бы вы ожидали от суммы строк "Yes" и "No" быть? "Yes", "No", "YesNo" или что-то еще?

planetz

сумма-это для чисел...вот почему я искал агрегатную функцию для строки...max() работал...

planetz

Я обновил запрос с помощью настоящей таблицы.

0 Ответов