Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопро про pivot  [new]
Pastic
Member

Откуда: Москва
Сообщений: 1909
Есть такой набор данных:
   select 'CDO' group_name, '07' month_num, 'JULY' month_name, 3 week_name, 1 usr_cnt from dual union all
   select 'CDO', '07', 'JULY', 4, 2 from dual union all
   select 'CDO', '07', 'JULY', 5, 2 from dual union all
   select 'CDO', '08', 'AUGUST', 1, 1 from dual union all
   select 'CDO', '08', 'AUGUST', 3, 1 from dual union all
   select 'CDO', '08', 'AUGUST', 4, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 2, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 4, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 5, 1 from dual union all
   select 'CDO', '10', 'OCTOBER', 1, 5 from dual union all
   select 'CDO', '10', 'OCTOBER', 2, 1 from dual union all
   select 'CDO', '10', 'OCTOBER', 3, 6 from dual union all
   select 'CDO', '10', 'OCTOBER', 4, 5 from dual union all
   select 'CDO', '10', 'OCTOBER', 5, 5 from dual union all
   select 'CDO', '11', 'NOVEMBER', 1, 2 from dual union all
   select 'CDO', '11', 'NOVEMBER', 2, 1 from dual union all
   select 'CDO', '11', 'NOVEMBER', 3, 3 from dual union all
   select 'Администрирование', '07', 'JULY', 1, 14 from dual union all
   select 'Администрирование', '07', 'JULY', 2, 14 from dual union all
   select 'Администрирование', '07', 'JULY', 3, 13 from dual union all
   select 'Администрирование', '07', 'JULY', 4, 16 from dual union all
   select 'Администрирование', '07', 'JULY', 5, 16 from dual union all
   select 'Администрирование', '08', 'AUGUST', 1, 15 from dual union all
   select 'Администрирование', '08', 'AUGUST', 2, 16 from dual union all
   select 'Администрирование', '08', 'AUGUST', 3, 22 from dual union all
   select 'Администрирование', '08', 'AUGUST', 4, 23 from dual union all
   select 'Администрирование', '08', 'AUGUST', 5, 6 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 1, 18 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 2, 14 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 3, 11 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 4, 20 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 5, 6 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 1, 20 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 2, 12 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 3, 18 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 4, 21 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 5, 8 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 1, 13 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 2, 18 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 3, 16 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 1, 4 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 2, 2 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 3, 5 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 4, 8 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 5, 8 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 1, 10 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 2, 9 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 3, 16 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 4, 13 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 5, 2 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 1, 10 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 3, 7 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 4, 11 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 1, 11 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 2, 4 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 3, 7 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 4, 6 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 5, 5 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 1, 2 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 2, 3 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 3, 4 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 1, 14 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 2, 13 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 3, 6 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 4, 20 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 5, 14 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 1, 11 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 2, 17 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 3, 15 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 4, 23 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 5, 9 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 1, 17 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 2, 8 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 3, 13 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 4, 10 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 5, 3 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 1, 12 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 2, 11 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 3, 17 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 4, 18 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 5, 7 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 1, 11 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 2, 20 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 3, 18 from dual union all
   select 'Вход в систему', '07', 'JULY', 1, 57 from dual union all
   select 'Вход в систему', '07', 'JULY', 2, 52 from dual union all
   select 'Вход в систему', '07', 'JULY', 3, 42 from dual union all
   select 'Вход в систему', '07', 'JULY', 4, 73 from dual union all
   select 'Вход в систему', '07', 'JULY', 5, 50 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 1, 61 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 2, 78 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 3, 80 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 4, 76 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 5, 21 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 1, 55 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 2, 49 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 3, 62 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 4, 54 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 5, 15 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 1, 1 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 2, 41 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 3, 48 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 4, 52 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 5, 30 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 1, 39 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 2, 69 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 3, 73 from dual union all
   select 'Мониторинг работы АС', '07', 'JULY', 1, 3 from dual union all
   select 'Мониторинг работы АС', '07', 'JULY', 5, 2 from dual union all
   select 'Мониторинг работы АС', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'Мониторинг работы АС', '10', 'OCTOBER', 4, 1 from dual union all
   select 'Поиск', '07', 'JULY', 1, 15 from dual union all
   select 'Поиск', '07', 'JULY', 2, 9 from dual union all
   select 'Поиск', '07', 'JULY', 3, 8 from dual union all
   select 'Поиск', '07', 'JULY', 4, 8 from dual union all
   select 'Поиск', '07', 'JULY', 5, 11 from dual union all
   select 'Поиск', '08', 'AUGUST', 1, 11 from dual union all
   select 'Поиск', '08', 'AUGUST', 2, 15 from dual union all
   select 'Поиск', '08', 'AUGUST', 3, 13 from dual union all
   select 'Поиск', '08', 'AUGUST', 4, 13 from dual union all
   select 'Поиск', '08', 'AUGUST', 5, 2 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 1, 8 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 3, 16 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 4, 10 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 5, 2 from dual union all
   select 'Поиск', '10', 'OCTOBER', 1, 17 from dual union all
   select 'Поиск', '10', 'OCTOBER', 2, 13 from dual union all
   select 'Поиск', '10', 'OCTOBER', 3, 10 from dual union all
   select 'Поиск', '10', 'OCTOBER', 4, 14 from dual union all
   select 'Поиск', '10', 'OCTOBER', 5, 6 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 1, 18 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 2, 10 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 3, 21 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 1, 1 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 2, 2 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 3, 1 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 4, 12 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 5, 5 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 1, 6 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 2, 2 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 3, 5 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 4, 9 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 1, 5 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 3, 2 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 4, 1 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 1, 3 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 2, 2 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 3, 2 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 4, 4 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 5, 1 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 1, 3 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 2, 4 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 3, 3 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 1, 30 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 2, 30 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 3, 24 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 4, 40 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 5, 27 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 1, 30 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 2, 35 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 3, 35 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 4, 41 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 5, 15 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 1, 29 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 2, 24 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 3, 38 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 4, 33 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 5, 9 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 1, 32 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 2, 31 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 3, 29 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 4, 36 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 5, 17 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 1, 25 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 2, 39 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 3, 51 from dual union all
   select 'Реестр витрин', '07', 'JULY', 1, 9 from dual union all
   select 'Реестр витрин', '07', 'JULY', 2, 16 from dual union all
   select 'Реестр витрин', '07', 'JULY', 3, 11 from dual union all
   select 'Реестр витрин', '07', 'JULY', 4, 18 from dual union all
   select 'Реестр витрин', '07', 'JULY', 5, 15 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 1, 12 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 2, 14 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 3, 14 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 4, 25 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 5, 7 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 1, 13 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 3, 19 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 4, 14 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 5, 5 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 1, 12 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 2, 14 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 3, 12 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 4, 24 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 5, 6 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 1, 10 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 2, 29 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 3, 27 from dual union all
   select 'Супермаркет', '07', 'JULY', 1, 26 from dual union all
   select 'Супермаркет', '07', 'JULY', 2, 27 from dual union all
   select 'Супермаркет', '07', 'JULY', 3, 15 from dual union all
   select 'Супермаркет', '07', 'JULY', 4, 28 from dual union all
   select 'Супермаркет', '07', 'JULY', 5, 19 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 1, 34 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 2, 41 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 3, 42 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 4, 44 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 5, 9 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 1, 24 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 2, 21 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 3, 23 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 4, 24 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 5, 5 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 1, 19 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 2, 8 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 3, 10 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 4, 11 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 5, 8 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 1, 10 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 2, 21 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 3, 17 from dual


Из него надо получить следующий набор данных:
select 'CDO' x1, null JULY1, null JULY2, 1 JULY3, 2 JULY4, 2 JULY5,
  1 AUGUST1, null AUGUST2, 1 AUGUST3, 2 AUGUST4, null AUGUST5,
  1 SEPTEMBER1, 2 SEPTEMBER2, null SEPTEMBER3, 2 SEPTEMBER4, 1 SEPTEMBER5,
  5 OCTOBER1, 1 OCTOBER2, 6 OCTOBER3, 5 OCTOBER4, 5 OCTOBER5,
  2 NOVEMBER1, 1 NOVEMBER2, 3 NOVEMBER3 from dual union all
select 'Администрирование', 14, 14, 13, 16, 16,  15, 16, 22, 23, 6,  18, 14, 11, 20, 6,
  20, 12, 18, 21, 8,  13, 18, 16 from dual union all
select 'Аудит, работа с журналами', 4, 2, 5, 8, 8,  10, 9, 16, 13, 2,  10, 9, 7, 11, 1,
  20, 12, 18, 21, 8,  13 from dual union all
select 'Бизнес глоссарий', 14, 13, 6, 20, 14,  11, 17, 15, 23, 9,  17, 8, 13, 10, 3,
  12, 11, 17, 18, 7,  11, 20, 18 from dual union all
select 'Вход в систему', 57, 52, 42, 73, 50,  61, 78, 80, 76, 21,  55, 49, 62, 54, 15,
  55, 41, 48, 52, 30,  39, 69, 73 from dual union all
select 'Мониторинг работы АС', 3, null, null, null, 2,  null, null, null, null, null,
  1, null, null, null, null,  null, null, null, 1, null,  null, null, null from dual union all
select 'Поиск', 15, 9, 8, 8, 11,  11, 15, 13, 13, 2,  8, 9, 16, 10, 2,  17, 13, 10, 14, 6,
  18, 10, 21 from dual union all
select 'Профиль пользователя', 1, 2, 1, 12, 5,  6, 2, 5, 9, null,  5, null, 2, 1, null,
  3, 2, 2, 4, 1,  3, 4, 3 from dual union all
select 'Реестр АС, объекты модели', 30, 30, 24, 40, 27,  30, 35, 35, 41, 15,  29, 24, 38, 33, 9,
  32, 31, 29, 36, 17,  25, 39, 51 from dual union all
select 'Реестр витрин', 9, 16, 11, 18, 15,  12, 14, 14, 25, 7,  13, 9, 19, 14, 5,
  12, 14, 12, 24, 6,  10, 29, 27 from dual union all
select 'Супермаркет', 26, 27, 15, 28, 19,  34, 41, 42, 44, 9,  24, 21, 23, 24, 5,
  19, 8, 10, 11, 8,  10, 21, 17
from dual


Я это сделал с помощью следующего sql-запроса:
with t as
  (select 'CDO' group_name, '07' month_num, 'JULY' month_name, 3 week_name, 1 usr_cnt from dual union all
   select 'CDO', '07', 'JULY', 4, 2 from dual union all
   select 'CDO', '07', 'JULY', 5, 2 from dual union all
   select 'CDO', '08', 'AUGUST', 1, 1 from dual union all
   select 'CDO', '08', 'AUGUST', 3, 1 from dual union all
   select 'CDO', '08', 'AUGUST', 4, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 2, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 4, 2 from dual union all
   select 'CDO', '09', 'SEPTEMBER', 5, 1 from dual union all
   select 'CDO', '10', 'OCTOBER', 1, 5 from dual union all
   select 'CDO', '10', 'OCTOBER', 2, 1 from dual union all
   select 'CDO', '10', 'OCTOBER', 3, 6 from dual union all
   select 'CDO', '10', 'OCTOBER', 4, 5 from dual union all
   select 'CDO', '10', 'OCTOBER', 5, 5 from dual union all
   select 'CDO', '11', 'NOVEMBER', 1, 2 from dual union all
   select 'CDO', '11', 'NOVEMBER', 2, 1 from dual union all
   select 'CDO', '11', 'NOVEMBER', 3, 3 from dual union all
   select 'Администрирование', '07', 'JULY', 1, 14 from dual union all
   select 'Администрирование', '07', 'JULY', 2, 14 from dual union all
   select 'Администрирование', '07', 'JULY', 3, 13 from dual union all
   select 'Администрирование', '07', 'JULY', 4, 16 from dual union all
   select 'Администрирование', '07', 'JULY', 5, 16 from dual union all
   select 'Администрирование', '08', 'AUGUST', 1, 15 from dual union all
   select 'Администрирование', '08', 'AUGUST', 2, 16 from dual union all
   select 'Администрирование', '08', 'AUGUST', 3, 22 from dual union all
   select 'Администрирование', '08', 'AUGUST', 4, 23 from dual union all
   select 'Администрирование', '08', 'AUGUST', 5, 6 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 1, 18 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 2, 14 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 3, 11 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 4, 20 from dual union all
   select 'Администрирование', '09', 'SEPTEMBER', 5, 6 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 1, 20 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 2, 12 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 3, 18 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 4, 21 from dual union all
   select 'Администрирование', '10', 'OCTOBER', 5, 8 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 1, 13 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 2, 18 from dual union all
   select 'Администрирование', '11', 'NOVEMBER', 3, 16 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 1, 4 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 2, 2 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 3, 5 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 4, 8 from dual union all
   select 'Аудит, работа с журналами', '07', 'JULY', 5, 8 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 1, 10 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 2, 9 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 3, 16 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 4, 13 from dual union all
   select 'Аудит, работа с журналами', '08', 'AUGUST', 5, 2 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 1, 10 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 3, 7 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 4, 11 from dual union all
   select 'Аудит, работа с журналами', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 1, 11 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 2, 4 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 3, 7 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 4, 6 from dual union all
   select 'Аудит, работа с журналами', '10', 'OCTOBER', 5, 5 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 1, 2 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 2, 3 from dual union all
   select 'Аудит, работа с журналами', '11', 'NOVEMBER', 3, 4 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 1, 14 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 2, 13 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 3, 6 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 4, 20 from dual union all
   select 'Бизнес глоссарий', '07', 'JULY', 5, 14 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 1, 11 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 2, 17 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 3, 15 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 4, 23 from dual union all
   select 'Бизнес глоссарий', '08', 'AUGUST', 5, 9 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 1, 17 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 2, 8 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 3, 13 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 4, 10 from dual union all
   select 'Бизнес глоссарий', '09', 'SEPTEMBER', 5, 3 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 1, 12 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 2, 11 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 3, 17 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 4, 18 from dual union all
   select 'Бизнес глоссарий', '10', 'OCTOBER', 5, 7 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 1, 11 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 2, 20 from dual union all
   select 'Бизнес глоссарий', '11', 'NOVEMBER', 3, 18 from dual union all
   select 'Вход в систему', '07', 'JULY', 1, 57 from dual union all
   select 'Вход в систему', '07', 'JULY', 2, 52 from dual union all
   select 'Вход в систему', '07', 'JULY', 3, 42 from dual union all
   select 'Вход в систему', '07', 'JULY', 4, 73 from dual union all
   select 'Вход в систему', '07', 'JULY', 5, 50 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 1, 61 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 2, 78 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 3, 80 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 4, 76 from dual union all
   select 'Вход в систему', '08', 'AUGUST', 5, 21 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 1, 55 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 2, 49 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 3, 62 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 4, 54 from dual union all
   select 'Вход в систему', '09', 'SEPTEMBER', 5, 15 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 1, 1 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 2, 41 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 3, 48 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 4, 52 from dual union all
   select 'Вход в систему', '10', 'OCTOBER', 5, 30 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 1, 39 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 2, 69 from dual union all
   select 'Вход в систему', '11', 'NOVEMBER', 3, 73 from dual union all
   select 'Мониторинг работы АС', '07', 'JULY', 1, 3 from dual union all
   select 'Мониторинг работы АС', '07', 'JULY', 5, 2 from dual union all
   select 'Мониторинг работы АС', '09', 'SEPTEMBER', 1, 1 from dual union all
   select 'Мониторинг работы АС', '10', 'OCTOBER', 4, 1 from dual union all
   select 'Поиск', '07', 'JULY', 1, 15 from dual union all
   select 'Поиск', '07', 'JULY', 2, 9 from dual union all
   select 'Поиск', '07', 'JULY', 3, 8 from dual union all
   select 'Поиск', '07', 'JULY', 4, 8 from dual union all
   select 'Поиск', '07', 'JULY', 5, 11 from dual union all
   select 'Поиск', '08', 'AUGUST', 1, 11 from dual union all
   select 'Поиск', '08', 'AUGUST', 2, 15 from dual union all
   select 'Поиск', '08', 'AUGUST', 3, 13 from dual union all
   select 'Поиск', '08', 'AUGUST', 4, 13 from dual union all
   select 'Поиск', '08', 'AUGUST', 5, 2 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 1, 8 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 3, 16 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 4, 10 from dual union all
   select 'Поиск', '09', 'SEPTEMBER', 5, 2 from dual union all
   select 'Поиск', '10', 'OCTOBER', 1, 17 from dual union all
   select 'Поиск', '10', 'OCTOBER', 2, 13 from dual union all
   select 'Поиск', '10', 'OCTOBER', 3, 10 from dual union all
   select 'Поиск', '10', 'OCTOBER', 4, 14 from dual union all
   select 'Поиск', '10', 'OCTOBER', 5, 6 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 1, 18 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 2, 10 from dual union all
   select 'Поиск', '11', 'NOVEMBER', 3, 21 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 1, 1 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 2, 2 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 3, 1 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 4, 12 from dual union all
   select 'Профиль пользователя', '07', 'JULY', 5, 5 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 1, 6 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 2, 2 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 3, 5 from dual union all
   select 'Профиль пользователя', '08', 'AUGUST', 4, 9 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 1, 5 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 3, 2 from dual union all
   select 'Профиль пользователя', '09', 'SEPTEMBER', 4, 1 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 1, 3 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 2, 2 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 3, 2 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 4, 4 from dual union all
   select 'Профиль пользователя', '10', 'OCTOBER', 5, 1 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 1, 3 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 2, 4 from dual union all
   select 'Профиль пользователя', '11', 'NOVEMBER', 3, 3 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 1, 30 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 2, 30 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 3, 24 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 4, 40 from dual union all
   select 'Реестр АС, объекты модели', '07', 'JULY', 5, 27 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 1, 30 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 2, 35 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 3, 35 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 4, 41 from dual union all
   select 'Реестр АС, объекты модели', '08', 'AUGUST', 5, 15 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 1, 29 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 2, 24 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 3, 38 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 4, 33 from dual union all
   select 'Реестр АС, объекты модели', '09', 'SEPTEMBER', 5, 9 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 1, 32 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 2, 31 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 3, 29 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 4, 36 from dual union all
   select 'Реестр АС, объекты модели', '10', 'OCTOBER', 5, 17 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 1, 25 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 2, 39 from dual union all
   select 'Реестр АС, объекты модели', '11', 'NOVEMBER', 3, 51 from dual union all
   select 'Реестр витрин', '07', 'JULY', 1, 9 from dual union all
   select 'Реестр витрин', '07', 'JULY', 2, 16 from dual union all
   select 'Реестр витрин', '07', 'JULY', 3, 11 from dual union all
   select 'Реестр витрин', '07', 'JULY', 4, 18 from dual union all
   select 'Реестр витрин', '07', 'JULY', 5, 15 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 1, 12 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 2, 14 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 3, 14 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 4, 25 from dual union all
   select 'Реестр витрин', '08', 'AUGUST', 5, 7 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 1, 13 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 2, 9 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 3, 19 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 4, 14 from dual union all
   select 'Реестр витрин', '09', 'SEPTEMBER', 5, 5 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 1, 12 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 2, 14 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 3, 12 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 4, 24 from dual union all
   select 'Реестр витрин', '10', 'OCTOBER', 5, 6 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 1, 10 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 2, 29 from dual union all
   select 'Реестр витрин', '11', 'NOVEMBER', 3, 27 from dual union all
   select 'Супермаркет', '07', 'JULY', 1, 26 from dual union all
   select 'Супермаркет', '07', 'JULY', 2, 27 from dual union all
   select 'Супермаркет', '07', 'JULY', 3, 15 from dual union all
   select 'Супермаркет', '07', 'JULY', 4, 28 from dual union all
   select 'Супермаркет', '07', 'JULY', 5, 19 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 1, 34 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 2, 41 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 3, 42 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 4, 44 from dual union all
   select 'Супермаркет', '08', 'AUGUST', 5, 9 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 1, 24 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 2, 21 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 3, 23 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 4, 24 from dual union all
   select 'Супермаркет', '09', 'SEPTEMBER', 5, 5 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 1, 19 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 2, 8 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 3, 10 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 4, 11 from dual union all
   select 'Супермаркет', '10', 'OCTOBER', 5, 8 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 1, 10 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 2, 21 from dual union all
   select 'Супермаркет', '11', 'NOVEMBER', 3, 17 from dual)
select *
  (select group_name, to_number(month_num) month_num, w1, w2, w3, w4, w5
   from t
   pivot (sum(usr_cnt) for week_num in (1 w1, 2 w2, 3 w3, 4 w4, 5 w5)))
pivot (sum(w1) w1, sum(w2) w2, sum(w3) w3, sum(w4) w4, sum(w5) w5)
  for (month_num) in (7 m7, 8 m8, 9 m9, 10 m10, 11 m11))
order by 1


Но этот запрос не является универсальным, поскольку жёстко настроен на конкретный набор месяцев (с 7-го по 11-й). Вопрос - как сделать этот запрос универсальным? Я думал о том, чтобы использовать динамический sql, но, возможно, есть более элегантное решение?

Oracle EE 12.1.0.2.0
26 ноя 19, 11:08    [22025330]     Ответить | Цитировать Сообщить модератору
 Re: Вопро про pivot  [new]
-2-
Member

Откуда:
Сообщений: 15330
Pastic
Но этот запрос не является универсальным, поскольку жёстко настроен на конкретный набор месяцев (с 7-го по 11-й). Вопрос - как сделать этот запрос универсальным?
Завяжись на двенадцать месяцев 01-12.
26 ноя 19, 11:11    [22025334]     Ответить | Цитировать Сообщить модератору
 Re: Вопро про pivot  [new]
Pastic
Member

Откуда: Москва
Сообщений: 1909
-2-
Pastic
Но этот запрос не является универсальным, поскольку жёстко настроен на конкретный набор месяцев (с 7-го по 11-й). Вопрос - как сделать этот запрос универсальным?
Завяжись на двенадцать месяцев 01-12.


Период времени может быть и больше 12 месяцев.
26 ноя 19, 11:15    [22025340]     Ответить | Цитировать Сообщить модератору
 Re: Вопро про pivot  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1313
Pastic,

Завяжись на N предыдущих месяцев до текущей даты.
26 ноя 19, 11:17    [22025343]     Ответить | Цитировать Сообщить модератору
 Re: Вопро про pivot  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1797
Не надо доводить до такого свою жизнь. РСУБД это немного не про key-value. Вытащи куда-нибудь все это наружу, да сделай что тебе надо. Подойдёт любой промышленный ЯП.
26 ноя 19, 11:26    [22025357]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить