Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
1

Запрос на разницу значений при отсутствии нескольких показателей в одном из значений

14.05.2015, 20:58. Просмотров 569. Ответов 8
Метки нет (Все метки)

Добрый вечер!

Прошу прощения за возможно глупый вопрос, но для меня это действительно проблема(

В моей базе есть таблица с данными, которая содержит объемы продаж (Tons) и деньги (NSV, LSV) по разным регионам и есть также такой тип региона, как Россия (данные равны сумме всех регионов). В таблице есть также еще другие регионы (другие страны), но они не участвуют в проблеме. Очень много столбцов с разными показателями.
Один из регионов решено убрать. Его данные я могу просто удалить из данной таблицы, но данные по России необходимо пересчитать: вычесть объемы по этому региону.
Причем совпадение данных должно быть по нескольким полям: месяц, год, item продукта, и еще пару (А, В).

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

Я пыталась решать так:
1) Query1 на выборку данных по убираемому региону по всем полям
2) Query2 на выборку данных по России по всем полям (все аналогично Query1)
3) Query3
SQL
1
2
3
SELECT SUM([Query2]![Tons]-[Query1]![Tons]) AS Tons, SUM([Query2]![LSV]-[Query1]![LSV]) AS LSV, SUM([Query2]![NSV]-[Query1]![NSV]) AS NSV
FROM Query2
LEFT JOIN Query1 ON (Query2.[А] = Query1.[А]) AND (Query2.[item] = Query1.[item]) AND (Query2.месяц = Query1.месяц) AND (Query2.год = Query1.год) AND (Query2.[В] = Query1.[В]);
...но он выдает ерунду (завышенные данные). Возможно дело во FROM? И точно дело в отсутствующих значениях по убираемому региону.

Может быть, можно решить как-то легче (одним запросом), желательно несложным?
Я с SQL дружу пока не очень, делала запросы через конструктор.

Была бы очень благодарна за советы и помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2015, 20:58
Ответы с готовыми решениями:

Запрос на разницу значений
Есть три таблицы: Поступление товара, Товар и Выбытие товара. Помогите составить запрос на...

Запрос на выборку нескольких последних значений
Добрый день, есть таблица в которой хранятся несколько значений с tagid 4,7,9,5. То есть значений...

Как проверить, заполнены ли все необходимые поля формы и при отсутствии значений вывести сообщение?
Здравствуйте! У меня на форме есть несколько <input> и несколько <checkbox>. Как проверить,...

SQL запрос поиск разных значений идет в одном и том же поле
Здравствуйте. Задача такая. Есть некая таблица. Нужно создать такой запрос, что бы два значения...

8
Эксперт MS Access
2818 / 1361 / 214
Регистрация: 13.05.2011
Сообщений: 4,177
14.05.2015, 21:19 2
Gie3ella, лучше всего покажите вашу базу и скажите какой регион убираете. На яву будет яснее.
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
14.05.2015, 22:01  [ТС] 3
Вячеслав, с удовольствием. Просто база рабочая, очень большая.
Постаралась оставить по-минимуму показателей. Все должны быть учтены при вычислении разницы.

Реальная рабочая проблема такова:
Regions = Hyperglobus и Selgros перемещаются из Group Geo =NationalAccounts в Group Geo =Russia.
Соответственно Region = NationalAccounts содержит сумму всех данных по Regions объединенных по Group Geo =NationalAccounts (не спрашивайте, зачем так, по имеющимся данным и их источникам по-другому сделать не получалось )
Нужно из всех данных (Tons, NSV, LSV) по Regions =NationalAccounts вычесть данные Regions =Hyperglobus и Selgros

Запросы оставлять не стала, так как они явно были кривыми...

Гузель.
0
Вложения
Тип файла: 7z 1.7z (4.95 Мб, 3 просмотров)
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
14.05.2015, 22:15  [ТС] 4
Вдогонку к предыдущему сообщению: может быть можно сделать просто один запрос на изменение текущей таблицы? Было бы удобнее всего. Но если нет то нет)
0
Эксперт MS Access
26132 / 13975 / 3058
Регистрация: 28.04.2012
Сообщений: 15,353
15.05.2015, 00:00 5
Цитата Сообщение от Gie3ella Посмотреть сообщение
может быть можно сделать просто один запрос на изменение текущей таблицы? Было бы удобнее всего.
Такой запрос выполняет это пожелание
SQL
1
2
UPDATE MainDatabase SET [GROUP Geo]="Russia"
WHERE Region IN ("Hyperglobus", "Selgros") AND [GROUP Geo]="NationalAccounts"
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
15.05.2015, 00:23  [ТС] 6
Спасибо! Но этот запрос вроде как выполняет только самую легкую часть задания - перенести клиентов из одного в другое. Самое сложное - вычесть из данных Regions =NationalAccounts Regions =Hyperglobus и Selgros
0
Эксперт MS Access
26132 / 13975 / 3058
Регистрация: 28.04.2012
Сообщений: 15,353
15.05.2015, 00:46 7
Цитата Сообщение от Gie3ella Посмотреть сообщение
Самое сложное - вычесть из данных Regions =NationalAccounts Regions =Hyperglobus и Selgros
А что значит "вычесть"? Как делается "вычитание"? Приведите пример "вычитания" хотя бы на одной записи.
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
15.05.2015, 02:16  [ТС] 8
Пожалуйста)
В приложенном рисунке видно, что я выбрала одинаковые записи например для Region=NationalAccount и Hyperglobus
И данные NationalAccount включают в себя в том числе Hyperglobus.
Нужно, чтобы новое значение NationalAccount = старое минус Hyperglobus и минус Selgros.
Для некоторых (многих) записей NationalAccount не будет соответствующих строчек по Hyperglobus и Selgros.

С другой стороны я подумала, что легче наверное сделать обратную операцию.
Hyperglobus и Selgros перенести в Russia. то есть исключить из NationalAccount так, как вы предложили.
А данные по оставшимся в NationalAccount клиентам суммировать по одинаковым записям (группировка?) и назвать NationalAccount. И эти новые значения NationalAccount вставить в таблицу вместо старых.

С уважением
Гузель.
0
Миниатюры
Запрос на разницу значений при отсутствии нескольких показателей в одном из значений  
Эксперт MS Access
26132 / 13975 / 3058
Регистрация: 28.04.2012
Сообщений: 15,353
15.05.2015, 08:25 9
Опять мало что понял. Из каких полей и что надо вычитать? Куда вставлять? Почему это надо делать?
Напрашивается только один вывод - какие-то поля, скажем Tons, LSV или NSV сделаны расчетными, вычисляются каким-то образом и опять заносятся в таблицу. Если так, то это неверный шаг. Хранить надо исходные данные. Все остальное запросами.

Впрочем, при большом количестве данных (как у Вас), результаты запросов бывает хранят в таблицах, поскольку долго вычислять каждый раз. Но это должно быть очень прозрачно. С полным текстовым описанием всех деталей. А сейчас мало что понятно. Или я такой тупой. Может кто другой Вам поможет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2015, 08:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ajax запрос для нескольких значений параметра
Ребят, сейчас данная форма выводит результат расчета параметров доставки. А как вывести на странице...

Возврат нескольких значений из метода не знаем сколько таких значений
Здравствуйте! Собственно вопрос: как возвращать <несколько> значений из метода если заранее...

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

Сумма значений при нескольких условиях
Добрый день! Не могу разобраться, вроде должна работать СУММЕСЛИМН, но она не работает..... ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.