С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 4
1

Суммировать по двум критериям в запросе DSUM

01.03.2018, 16:53. Показов 2622. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день,

Новичок в аксес, если было не ругайте, мне кажется я еще все пересмотрела. В екселе бы это сделала на раз.

У меня есть большой массив (договорыLR)
с выплатами (сумма выплат),
датой выплат (Дата услуги),
кому они принадлежат (№ договора)

Есть другая таблица (2_дата прогноза):
кому принадлежат (№ договора),
датой прогноза (Дата прогноза 1 мес)

Я хочу просуммировать выплаты по каждому договору, при условии, что дата услуги меньше или равна дате прогноза.
Итог новая табличка.

В запросе в построителе пишу следующее:
Сумм выпл: DSum("[Суммарные выплаты]";"договорыLR";[договорыLR].[№ договора]=[2_дата прогноза].[№ договора] And [договорыLR].[Дата услуги]<=[2_дата прогноза].[Дата прогноза 1 мес])

Он мне делает выборку, но суммирует все.

Может я что то не так указываю в поле групповая операция? или синтаксис кривой?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2018, 16:53
Ответы с готовыми решениями:

Функция DSUM в запросе
Добрый вечер! Подскажите как правильно описать в функции DSUM параметры для правильного подсчета...

IIF и Dsum в запросе
Привет и доброе здравье всем. У меня полное недоумение по поводу VB access. По этому прошу мне...

Фильтрация по двум критериям
Здравсвуйте. Помогите пожалуйста, написаить код для того, чтобы фильтровать таблицу по двум...

Сравнение таблиц по двум критериям
Здравствуйте, не могу решить задачу 1.нужно сравнить 2 таблицы, при совпадении в двух таблицах...

8
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
01.03.2018, 17:04 2
SQL
1
DSum("[Суммарные выплаты]";"договорыLR";"[Дата услуги]<=" & DLookUp("[Дата прогноза 1 мес]";"[2_дата прогноза]";"[№ договора]=" & [№ договора]))
0
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 4
01.03.2018, 17:53  [ТС] 3
Спасибо!

Пишет, что № договора может относится к полям нескольких таблиц. Как правильно указать таблицу?

Добавлено через 43 минуты
Дабавила, DSum("[Суммарные выплаты]";"договорыLR";"[Дата услуги]<=" & DLookUp("[Дата прогноза 1 мес]";"[1_Общее]";"[№ договора]=" & [договорыLR].[№ договора]))

Ошибка: Ошибка синтаксиса (пропущен оператор)в выражении запроса '[№ договора]='
0
9113 / 6051 / 591
Регистрация: 27.03.2013
Сообщений: 19,882
01.03.2018, 17:58 4
А вот в моих БД нет ни одного поля с одинаковым именем, соответственно и таких проблемм не возникает.
0
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 4
01.03.2018, 18:11  [ТС] 5
Когда нибудь настанет день, и я начну понимать.
Сделала, что нет повторяющихся, тот же самый результат: ошибка синтаксиса
0
9113 / 6051 / 591
Регистрация: 27.03.2013
Сообщений: 19,882
01.03.2018, 18:15 6
Цитата Сообщение от Olya273 Посмотреть сообщение
...ошибка синтаксиса...
По типам полей в таблице может различаться синтаксись.
Где просто, где в апострофы обрамлять, а где и ВАААЩЕ в Американский формат дату из условия форматировать.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
01.03.2018, 18:26 7
Лучший ответ Сообщение было отмечено Olya273 как решение

Решение

Olya273,

Вам обязательно нужно через DSum?
Попробуйте так:
SQL
1
2
3
4
5
6
SELECT [№ договора], SUM([Суммарные выплаты]) 
FROM договорыLR 
WHERE [Дата услуги]<=(SELECT TOP 1 [Дата прогноза 1 мес] 
                      FROM [2_дата прогноза] 
                      WHERE [№ договора]=договорыLR.[№ договора])
GROUP BY [№ договора]
1
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 4
02.03.2018, 15:50  [ТС] 8
С DSUM может не получается, потому что №договора текстовое?

Я так и не пробовала раньше, так удобнее Спасибо!
Вот как в итоге выглядит запрос:

SQL
1
2
3
4
5
6
7
8
9
SELECT договорыLR.[№ договора],
 договорыLR.[Дата начала договора],
 договорыLR.[Дата окончания договора], [1_Общее].[Суммарные выплаты],
 SUM(договорыLR.Выплаты) AS [Выплаты -1мес]
FROM договорыLR
 INNER JOIN 1_Общее ON договорыLR.[№ договора] = [1_Общее].[№ договора_об]
WHERE (((договорыLR.[Дата услуги])<=[1_Общее].[Дата прогноза 1 мес]))
GROUP BY договорыLR.[№ договора], договорыLR.[Дата начала договора],
 договорыLR.[Дата окончания договора], [1_Общее].[Суммарные выплаты];

Т е у меня сейчас в выборке Суммарные выплаты, Выплаты -1мес.

Вопрос как мне добавить в эту же выборку графу Выплаты -2 мес., т е все тоже самое, только фильтр Дата прогноза 2 мес

Добавлено через 39 секунд
и при этом Выплаты -1 меся нужно оставить
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
03.03.2018, 00:40 9
Цитата Сообщение от Olya273 Посмотреть сообщение
как мне добавить в эту же выборку графу Выплаты -2 мес., т е все тоже самое, только фильтр Дата прогноза 2 мес
SQL
1
2
3
4
5
6
7
8
9
SELECT договорыLR.[№ договора],
       FIRST(договорыLR.[Дата начала договора]),
       FIRST(договорыLR.[Дата окончания договора]), 
       FIRST([1_Общее].[Суммарные выплаты]),
       -SUM(договорыLR.Выплаты*(договорыLR.[Дата услуги])<=[1_Общее].[Дата прогноза 1 мес])) AS [Выплаты -1мес],
       -SUM(договорыLR.Выплаты*(договорыLR.[Дата услуги])<=[1_Общее].[Дата прогноза 2 мес])) AS [Выплаты -2мес]
FROM договорыLR
INNER JOIN 1_Общее ON договорыLR.[№ договора] = [1_Общее].[№ договора_об]
GROUP BY договорыLR.[№ договора]
0
03.03.2018, 00:40
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2018, 00:40
Помогаю со студенческими работами здесь

Поиск по двум критериям и больше
Set rgResult = Range(&quot;D1:B13&quot;).Find(&quot;5, п&quot;) Добрый день. На данный момент я ищу нужные мне...

Сделать выборку по двум критериям
Есть таблица,1 колонка- баллы, 2 колонка- группа учащихся, 3 колонка- количество просмотренных...

Выборка элементов по двум критериям
Хотела изменить цвет у всех тегов &lt;p&gt; с классом &quot;myClass&quot;. Наткнулась на querySelectorAll()....

Поиск по двум критериям в массиве
Если два массива. В одном вес собак, в другом рост собак. Элементы массивов с одинаковыми номерами...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Администрирован­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru