Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 16

Сводная таблица, подскажите как оптимизировать запрос

02.10.2016, 15:17. Показов 1453. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Столкнулся вот с такой задачей:
Нужно выбрать с таблицы в сводную данные по учащимся по типу формы обучения с распределением по возрасту, должно получиться что-то типа как в запросе что описан ниже:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TRANSFORM COUNT(zZv.ФИО) AS [Count-ФИО]
SELECT zZv.[Форма]
FROM zZv
GROUP BY zZv.[Форма]
PIVOT iif(zZv.date_v< 15,"<15",
iif(zZv.date_v = 15,"15",iif(zZv.date_v = 16,"16",
iif(zZv.date_v = 17,"17",iif(zZv.date_v = 18,"18",
iif(zZv.date_v = 19,"19",
iif(zZv.date_v = 20,"20",iif(zZv.date_v = 21,"21",
iif(zZv.date_v = 22,"22",iif(zZv.date_v = 23,"23",
iif(zZv.date_v = 24,"24",iif(zZv.date_v = 25,"25",
iif(zZv.date_v = 26,"26",iif(zZv.date_v = 27,"27",
iif(zZv.date_v = 28,"28",iif(zZv.date_v = 29,"29",
iif(zZv.date_v = BETWEEN 30 AND 34,"30-34",
iif(zZv.date_v > 34,">34"))))))))))))))))));
Но при запуске:
Ошибка: Слишком сложное выражение в выражении запроса!

Помогите плз оптимизировать запрос.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2016, 15:17
Ответы с готовыми решениями:

Режимы Сводная таблица и Сводная диаграмма в access 2013
куда делись режимы Сводная таблица и Сводная диаграмма в access 2013? Остались только режимы конструктор и таблица

Сводная таблица через запрос SQL
Здравствуйте! Помогите разобраться в таком вопросе: Есть таблица: Номер Период 1111    Вчера 1112    Сегодня 1113    Завтра ...

Сводная таблица: как создать вычисляемое поле?
Добрый вечер! Есть огромная таблица из 8 полей. 8 поле &quot;% выполнения&quot;, где цифры от 0,0 до 100,0. Сейчас необходимо в сводной таблице...

5
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.10.2016, 16:36
SQL
1
2
3
4
5
6
7
TRANSFORM COUNT(zZv.ФИО) AS [Count-ФИО]
SELECT zZv.[Форма]
FROM zZv
GROUP BY zZv.[Форма]
PIVOT iif(zZv.date_v< 15,"<15",
iif(zZv.date_v>34, ">34"), 
iif(zZv.date_v BETWEEN 30 AND 34, "30-34", cstr(zZv.date_v))))
2
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 16
02.10.2016, 17:56  [ТС]
Странно но пишет ошибку:

Лишняя скобка ) в выражении запроса 'iif(zZv.date_v>34, ">34"), iif(zZv.date_v BETWEEN 30 AND 34, "30-34", cstr(zZv.date_v))))'.

Добавлено через 16 минут
Ошибку со скобками устранил:

TRANSFORM COUNT(zZv.ФИО) AS [Count-ФИО]
SELECT zZv.[Форма]
FROM zZv
GROUP BY zZv.[Форма]
PIVOT iif(zZv.date_v< 15,"<15", iif(zZv.date_v>34, "34>", iif(zZv.date_v BETWEEN 30 AND 34, "30-34", cstr(zZv.date_v))));

спасибо огромное, но нужно именно чтоб "выводило" и пустые значения для "возраста" (дальше эти запросы, а их несколько, планируется "юнить" для сведения общего числа по возрасту для разных таблиц-специальностей)

Добавлено через 8 минут
Т.Е. получается что если для одного запроса нету данных, к примеру, по возрасту "19" а для второго к "22", то Union "возмущается", прошу прощения что не оговорил сразу в условии.
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.10.2016, 18:50
Цитата Сообщение от deret24 Посмотреть сообщение
нужно именно чтоб "выводило" и пустые значения для "возраста"
Попробуйте
SQL
1
PIVOT iif(zZv.date_v IS NULL, "Возраст не указан", iif(zZv.date_v< 15,"<15", iif(zZv.date_v>34, "34>", iif(zZv.date_v BETWEEN 30 AND 34, "30-34", cstr(zZv.date_v)))))
2
0 / 0 / 0
Регистрация: 08.07.2015
Сообщений: 16
02.10.2016, 20:13  [ТС]
в том то и дело что "готовый результат" должен быть вида:

<1515161718192021222324252627282930-3434>
  679151483121 1  1 
    1231  1       

для этого я в начале и iif для каждого "возраста" и расписал
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.10.2016, 20:59
Нет, так Вы нужного порядка не получите. У пивот-запроса свои правила.
Надо в исходном запросе zZv образовать поле dt_v:
SQL
1
iif(zZv.date_v IS NULL, "Возраст не указан", iif(zZv.date_v< 15,"<15", iif(zZv.date_v>34, "34>", iif(zZv.date_v BETWEEN 30 AND 34, "30-34", cstr(zZv.date_v))))) AS dt_v
А в пивоте перекрестного задать нужный порядок dt_v в предложении In
SQL
1
Pivot dt_v IN("<15","15","16",...,"30-34","34>")
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2016, 20:59
Помогаю со студенческими работами здесь

Как сделать автоматически обновляемую сводную таблицу Excel?
Задача стоит такая: Есть пять менеджеров, каждый ведет свою таблицу клиентов, нужно что бы у начальника отдела была общая сводная таблица...

Сводная таблица
Здравствуйте, подскажите как мне в сводной таблице добавить столбики &quot;Дата приёма&quot; и &quot;Дата сдачи&quot; так же как я добавил...

Сводная таблица
Доброго дня. Подскажите, что нужно сделать, чтобы в сводную таблицу добавить подсчет количества? В данном примере нужен подсчет кол-ва типа...

Сводная таблица
Можно ли из одной таблицы создать сводную, при этом объединяя данные из разных строк? Пример во вложении

Сводная таблица
Здравствуйте! Подскажите пожалуйста. Задание в картинке. Нужно создать отчет по каждому курсу с графическим отображением. Я так понимаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru