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

Группировка данных

11.02.2015, 19:16. Показов 1545. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В Таблицу1 будут загружаться данные из Excel.
Нужно сгруппировать (подсчитать) эти данные в Таблицу2 по условию:
1. Таблица2.Счет1 = Таблица1.Счет1
2. Таблица2.А1 = SUM(Таблица1.Сумма) где Таблица1.Счет2 начинается с 55
3. Таблица2.А2 = SUM(Таблица1.Сумма) где Таблица1.Счет2 начинается с 66
4. Таблица2.А3 = SUM(Таблица1.Сумма) где Таблица1.Счет2 начинается с 77 и с 88

В Таблице1 будет помещаться порядка 4000 записей каждый день.
В Таблице2 полей А1, А2.... будет порядка 20 штук.
В Таблице2 будет около 200 записей (разных счетов), которые должны будут ежедневно обновляться исходя из даггых, загруженных в Таблицу1.
Таблицы не связаны.

Подскажите, как лучше сделать все это дело.
Во вложении в Таблице2 я нарисовал как примерно должно получиться.

Спасибо
Вложения
Тип файла: rar Database1.rar (10.0 Кб, 5 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2015, 19:16
Ответы с готовыми решениями:

Группировка данных
Всем привет. Проблема с группировкой данных. Есть люди (таблица Главная - ФИО), у этих людей есть Вид устройства (таблица Вид...

Группировка данных в форме по признаку
Добрый день! Подскажите пожалуйста, существует ли возможность группировки данных в форме, созданной по типу таблицы, по какому то заданному...

Группировка данных из двух полей
Здравствуйте форумчане! Изучаю Access и возник такой вопрос: Как прописать группировку данных по полям "Группа ТПА",...

7
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.02.2015, 20:18
Запрос на выборку может быть такой
SQL
1
2
3
4
5
6
SELECT Таблица1.Счет1, 
  -SUM((val(LEFT(Счет2,2)) = 55)*Сумма) AS a1, 
  -SUM((val(LEFT(Счет2,2)) = 66)*Сумма) AS a2,  
  -SUM((val(LEFT(Счет2,2)) = 77 OR val(LEFT(Счет2,2)) = 88)*Сумма) AS a3
FROM Таблица1
GROUP BY Таблица1.Счет1
Что же касается помещения результатов в Таблица2, то здесь не ясно, нужно ли добавлять записи или обновлять их. Если только обновлять, считая, в Таблица2 есть полный набор значений Счет1, то, как мне кажется, это не совсем верное решение. Ведь в этом случае Вы лишаетесь все истории расчетов. А ведь достаточно добавить дату и у Вас всегда будет и актуальные значения и вся история.
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 802
11.02.2015, 23:02  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
только обновлять, считая, в Таблица2 есть полный набор значений Счет1
1. Планировалось только обновлять....
2. В Таблица2 есть полный набор значений Счет1
3. Но с датой - интересное предложение!!!!

Дело в том, что каждые несколько Счет1 из Таблица2 принадлежат определенному полю "Отдел".
Я поправил базу во вложении.
Планировалось, что на форме будет выбираться "Отдел" и в соответствии с выбранным отделом будут запускаться запросы к Таблица2.
Вся проблема в синхронизации полей "Отдел" Таблицы2 и "Счет1" Таблицы1.
Если возможно их синхронизировать другим способом, то тогда конечно можно думать и про Дату.
Вложения
Тип файла: rar Database1.rar (10.5 Кб, 2 просмотров)
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.02.2015, 23:41
Лучший ответ Сообщение было отмечено govorun как решение

Решение

Если нет такого Счет1, который бы принадлежит 2 или нескольким отделам, т.е. пары Счет-Отдел уникальны, то нет смысла иметь поле Отдел в Таблица2. Надо вынести соответствие Счет-Отдел в справочник из которого всегда можно найти название отдела по счету. Во вложении так и сделано - образована новая таблица СчетаОтделы, где каждому отделу соответствует свой счет. На оба поля в этой таблице сделан уникальный индекс во избежание повторений.
В Таблица2 также сделан уникальный индекс на пару полей Счет1-Дата, чтобы избежать повторного выполнения запроса на вставку.

Создан запрос на вставку данных в Таблица2 - ВставитьДанные, содержащий также текущую дату в поле Дата

Для иллюстрации актуальных выборок по последней дате и с именем отдела сделан запрос Выборка
Вложения
Тип файла: rar Database12.rar (13.1 Кб, 3 просмотров)
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 802
13.02.2015, 18:30  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
На оба поля в этой таблице сделан уникальный индекс во избежание повторений
Вы про это - Индексируемре поле - "НЕТ" ? Это я просто для себя спрашиваю, чтоб разобраться...

Добавлено через 9 минут
mobile, Общий принцип подхода к решению проблемы понятен. Теперь буду вникать в подробности, а потом задавать вопросы...
Спасибо

Добавлено через 23 часа 23 минуты
mobile,
А можно вместо такого запроса сделать запрос со ссылкой на поле или строку?
Например, проаисать в Поле1 знчения: 77, 88, ....
а в запросе написать условие: SUM(Суииа) .... WHERE Счет2 начинается со значений указанных в Поле1

Просто этих значений будет много и их размерность будет разная (77, 88, 901, 9101...)
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.02.2015, 19:41
Цитата Сообщение от govorun Посмотреть сообщение
А можно вместо такого запроса сделать запрос со ссылкой на поле или строку?
Например, проаисать в Поле1 знчения: 77, 88, ....
а в запросе написать условие: SUM(Суииа) .... WHERE Счет2 начинается со значений указанных в Поле1
Просто этих значений будет много и их размерность будет разная (77, 88, 901, 9101...)
Боюсь, что я не до конца понял Ваше желание. Было бы неплохо увидеть что есть на входе и как должно быть на выходе. Вот в первом посте Вы очень удачно иллюстрировали входные даные и желаемый выходной набор. Сделайте также еще раз для дополнительных требований, оговоренных в Вашем последнем посте.
Подумайте также насчет сведения всех счетов, перечисляемых в таблице1, поле Счет2 в отдельную таблицу с указанием отделов. Я не знаю, насколько это возможно. Но если удастся, то вероятность ошибочных решений будет значительно уменьшена.
1
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 802
13.02.2015, 21:33  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Сделайте также еще раз
Понял...., сотворю идею и выложу...
0
148 / 35 / 6
Регистрация: 01.11.2013
Сообщений: 802
14.02.2015, 13:41  [ТС]
Немного переделал базу....

В таблицу Данные будут загружаться данные из Excel.
В таблице ОтделСчет указаны Счета, соответствующие каждому Отделу.

Нужно сгруппировать (подсчитать) и Вставить эти данные в таблицу Отбор по соответствующему Отделу по условию:
Отбор.Счет = принадлежит ОтделСчет.Счет и группировать по полю Признак
Поле Признак будет обязательным. Один Счет может иметь несколько Признаков. Количество признаков не статично.

приходные операции по Счету:
Отбор.А1_1 = SUM(Данные.Сумма1) где Данные.Счет2 начинается с значения указанного в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу
Отбор.А1_2 = SUM(Данные.Сумма2) где Данные.Счет2 начинается с значения указанного в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу
Отбор.А2_1 = SUM(Данные.Сумма1) где Данные.Счет2 начинается с значения указанного в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу
Отбор.А2_2 = SUM(Данные.Сумма2) где Данные.Счет2 начинается с значения указанного в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу
Отбор.А3_1 = SUM(Данные.Сумма1) где Данные.Счет2 начинается с значения указанного в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу
Отбор.А3_2 = SUM(Данные.Сумма2) где Данные.Счет2 начинается с значения. указаногоо в таблице Условие и Данные.Счет1= ОтделСчет.Счет по соответствующему отделу

расходные операции по Счету
Отбор.В1_1 = SUM(Данные.Сумма1) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу
Отбор.В1_2 = SUM(Данные.Сумма2) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу
Отбор.В2_1 = SUM(Данные.Сумма1) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу
Отбор.В2_2 = SUM(Данные.Сумма2) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу
Отбор.В3_1 = SUM(Данные.Сумма1) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу
Отбор.В3_2 = SUM(Данные.Сумма2) где Данные.Счет1 начинается с значения указанного в таблице Условие и Данные.Счет2= ОтделСчет.Счет по соответствующему отделу

После Всавки данных в таблицу Отбор, таблица Данные будет очищаться и все значения будут храниться в таблице Отбор (существенно меньшее количество записей).

Сделаны таблица Контроль1 и Контроль2 для проверки полноты отбора информации в таблицу Отбор.

На форме пользователь будет выбирать Отдел и Дату.
После нажатия кнопки ОК будет формироваться Отчет на основе таблицы Отбор.

Как синхронизировать все эти таблицы и как сделать ссылку на условие указанное в таблице Условие не представляю.
Спасайте кто чем сможет.
Спасибо.
Вложения
Тип файла: rar Database1.rar (16.6 Кб, 4 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2015, 13:41
Помогаю со студенческими работами здесь

Группировка данных в запросе или отчете
Имеется некоторая таблица с полем числовых данных.Хотелось бы создать запрос в котором бы данные из поля таблицы располагались в запросе в...

группировка
Я уже обрадовался, начал заносить данные. А тут смотрю... вообщем я новичок в Аксе. В форме1 я забил несколько протоколов (сотни...

Группировка фильтров
Повторно обращаясь за помощью. Поручили сделать базу с сотрудниками. Access только начал изучать, а время поджимает, начальство нервничает....

Сортировка(группировка)
Нужно в запросе сделать группировку(сортировку) по числу в месяце с 01 по 15 число при этом месяц и год могут быть любыми, с SQL не...

Группировка в отчете
День добрый... Необходимо сделать отчет как на рисунке.... Готово и ждет отгрузки : Готовность до сегодняшнего дня т.е все заказы в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru