powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос
8 сообщений из 33, страница 2 из 2
Запрос
    #34913674
FEAS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо AleksMed теперь всё работает как часы )
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запрос
    #35759283
George1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал запрос:

select depno, step, count(step) as qty
from emp
group by depno, step
order by depno, step;

В результате получил:

Название кафедры - Должность - Количество
Кафедра 1 профессор 2
Кафедра 1 доцент 3
Кафедра 2 профессор 4
Кафедра 2 доцент 8
Кафедра 3 доцент 3

А очень хотелось бы вот так:

Название кафедры - Профессоров - Доцентов
Кафедра 1 2 3
Кафедра 2 4 8
Кафедра 3 0 3


Как добиться такого результата через коррелированный подзапрос в списке выбора??

Подскажите, плиззз!!
...
Рейтинг: 0 / 0
Запрос
    #35759366
George1написал запрос:

select depno, step, count(step) as qty
from emp
group by depno, step
order by depno, step;

В результате получил:

Название кафедры - Должность - Количество
Кафедра 1 профессор 2
Кафедра 1 доцент 3
Кафедра 2 профессор 4
Кафедра 2 доцент 8
Кафедра 3 доцент 3

А очень хотелось бы вот так:

Название кафедры - Профессоров - Доцентов
Кафедра 1 2 3
Кафедра 2 4 8
Кафедра 3 0 3


Как добиться такого результата через коррелированный подзапрос в списке выбора??

Подскажите, плиззз!!

Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select a.depno,sum(iif(a.step="профессор",a.qty, 0 )) as prof,sum(iif(a.step="доцент",a.qty, 0 )) as docent;
from (;
select depno, step, count(step) as qty;
from emp;
group by depno, step;
order by depno, step;
) as a group by  1 
...
Рейтинг: 0 / 0
Запрос
    #35759386
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select depno,
sum(iif(step='Профессор',1,0)) ,
sum(iif(step='Доцент',1,0))
..............
from emp
group by depno

И перечислять все должности. Их, думаю, немного.

А вообще надо делать две таблицы с ключевыми полями.
...
Рейтинг: 0 / 0
Запрос
    #35759402
George1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно сделать используя count(*) from ... where ...
...
Рейтинг: 0 / 0
Запрос
    #35759437
George1А можно сделать используя count(*) from ... where ...
Можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select a.depno, a.qty as prof,b.qty as docent
from 
(select depno, count(*) as qty
from emp
where step="профессор"
group by depno
order by depno) as a,
(select depno, count(*) as qty
from emp
where step="доцент"
group by depno
order by depno) as b
where a.deptno=b.deptno
order by a.depno
...
Рейтинг: 0 / 0
Запрос
    #35759486
George1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде всё понятно, только смущает первая строчка, там prof и docent. Откуда они возьмутся?
В таблице нет таких полей. Будет правильно, если их заменить соответственно на
'Профессор' и 'доцент'
...
Рейтинг: 0 / 0
Запрос
    #35760493
George1Вроде всё понятно, только смущает первая строчка, там prof и docent. Откуда они возьмутся?
В таблице нет таких полей...
А Вы заметили перед ними ключевое слово "as", которое означает назначение полю нового имени (псевдонима)?
Код: plaintext
...a.qty as prof, b.qty as docent...
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]