Показать сообщение отдельно
  #13  
Старый 02.09.2014, 20:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ага, а тут гораздо интереснее. Т.е. теперь нам надо развернуть вертикальную таблицу в горизонтальную (наверное, не совсем точное описание, скажем так, надо объединить строки для одинакового отдела в одну). Действительно, это можно сделать с помощью запроса из запроса, НО я советую делать это с построением view, т.к. это будет, наверное, эффективнее.
1. Создаем вью из твоего запроса:
Код:
create view roj_sex as select podra, sex, count(*) as c from roj group by podra, sex;
(я упростил немного для отладки)

2. А теперь пишем запрос, который собирает данные в одну кучку:
Код:
select podra, sum(case when sex = 'mal' then C else 0 end) as c_mal, sum(case when sex = 'fem' then C else 0 end) as c_fem from roj_sex group by podra;

Пример результата:
Код:
 PODRA | C_MAL | C_FEM
-------+-------+-------
 podr  |     1 |     1

PS. сорри, на этой системе русского языка нет. так что пришлось по английски писать пол.
Ответить с цитированием