![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
A32 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.1.2013 Репутация: нет Всего: нет |
Проблема не сложная, но решена как-то "коряво".
Есть таблица из четырёх полей: дата, приход, расход, отдел. Требуется рассчитать разницу прихода и расхода по отделам в заданном интервале дат. Первый запрос фильтрует данные по дате. Второй запрос считает сумму Прихода и сумму Расхода. Третий запрос считает разницу этих сумм. Три запроса для такой несложной задачи мне представляются излишними, но самостоятельно упростить не получилось. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: нет Всего: 386 |
Эти запросы используются еще в каких - нибудь других запросах? Если используются - лучше не трогать.
Вообще - с чего возникла идея оптимизировать? Тормозит? А вообще - почитать про групповые операции в msAccess -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
mikeyess |
|
|||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 7.1.2014 Репутация: нет Всего: нет |
select Sum(приход) as Prixod, Sum(расход) as Rasxod
from TableName where (отдел = "номер или название отдела") and (дата >= "с даты") and (дата < "по дату + 1") Prixod и Rasxod будут нужные. если нужно только их разница, то замените 1 строку на: select Sum(приход) - Sum(расход) as Raznica С уважением, Mike Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
A32 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.1.2013 Репутация: нет Всего: нет |
Нет, не в этом дело. Просто не люблю криво - косо сделанную работу, прежде всего свою. Поэтому стремлюсь к лаконичности, в этом смысле SQL запросы мне представляются избыточно сложными. Но проверил оба варианта. Оба работают (спасибо). Но вариант mikeyess не очень удобен - отдел надо задавать отдел вручную и выводит он только одну строку для этого отдела. А вариант Akina простой и изящный. Проблема в том, что я абсолютно не понимаю этот синтаксис. Упс. Посмотрел на код ещё раз и осенило: это, наверное, надо понимать так: SELECT [отдел], Sum([приход]) AS Debet, Sum([расход]) AS Credit, Debet - Credit AS Saldo Никогда не ставил запятые в начале строки (привычка фортраниста), вот и не понял. Но в любом случае, изучать синтаксис SQL для решения простых задач не готов. Так что ждите в гости. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Всего лишь для удобства отладки - комментирование строки начальной парой символов тире (отладочные поля всегда после содержательных). -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS Access" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS Access | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |