Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Математическая операция в TRANSFORM / 6 сообщений из 6, страница 1 из 1
16.04.2016, 10:15
    #39217070
fru125
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
Добрый день, я начал изучать SQL пару дней назад.
Задача: в Access 2013 есть 2 таблицы: Поступления и Выбытия. Нужно посчитать остатки (Поступления-Выбытия).
Обе таблицы содержат поля: ID Товара, ID Склада, кол-во товара.
Есть соответствующие справочники товаров и справочники складов, пока опустим их. Но дело в том, что код не должен меняться при изменении кол-ва складов или товаров.
Я было думал, что круто делать перекрестный запрос, когда у меня строки - сгруппированный ID товара, а столбцы - сгруппированный ID Склада. Так сделать с двумя таблицами а потом их вычесть, математически:

Код: sql
1.
2.
3.
4.
5.
TRANSFORM SUM([Поступления].[Кол-во]) - (SELECT SUM(Выбытия.[Кол-во]) FROM Выбытия WHERE Выбытия.[ID Товара] = Поступления.[ID Товара] AND Выбытия.[ID Категории склада] = Поступления.[ID Категории склада])
SELECT Поступления.[ID Товара]
FROM Поступления
GROUP BY Поступления.[ID Товара],  [Поступления].[ID Категории склада]
PIVOT [Поступления].[ID Категории склада];



Ругается на то, что СУБД не распознает первое упоминание Поступления.[ID Товара]. Я методом тыка пришел к мысли, что в Transform Нельзя засунуть математическую операцию. Я прав и изначально иду в неверном направлении?

Готов все сделать по-другому, если подскажете, в каком направлении идти)

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

Заранее спасибо!
...
Рейтинг: 0 / 0
16.04.2016, 11:45
    #39217105
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
fru125,
стесняюсь спросить:а зачем две таблицы-достаточно одной, с полями "поступление" и "выбытие". Ваши "хотелки" решатся много проще. (или создайте запрос для перекрестного, на базе двух таблиц и уже на нем перекрестный)
...
Рейтинг: 0 / 0
17.04.2016, 00:28
    #39217442
fru125
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
sdkufru125,
стесняюсь спросить:а зачем две таблицы-достаточно одной, с полями "поступление" и "выбытие". Ваши "хотелки" решатся много проще. (или создайте запрос для перекрестного, на базе двух таблиц и уже на нем перекрестный)

Меня больше не решение задачи интересует, а почему не работает конкретно этот код. В любом случае спасибо.
...
Рейтинг: 0 / 0
17.04.2016, 00:48
    #39217447
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
fru125,
так не надо путать (в подчиненном запросе) WHERE и JOIN
18988991
...
Рейтинг: 0 / 0
17.04.2016, 01:08
    #39217450
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
вдогонку:ваш код работать не будет пока Вы не создадите источник данных (запрос) для перекрестного запроса
...
Рейтинг: 0 / 0
18.04.2016, 20:42
    #39218604
fru125
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Математическая операция в TRANSFORM
Ок, всем спасибо. Мне еще нужно основы учить)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Математическая операция в TRANSFORM / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]