Добрый день, я начал изучать SQL пару дней назад.
Задача: в Access 2013 есть 2 таблицы: Поступления и Выбытия. Нужно посчитать остатки (Поступления-Выбытия).
Обе таблицы содержат поля: ID Товара, ID Склада, кол-во товара.
Есть соответствующие справочники товаров и справочники складов, пока опустим их. Но дело в том, что код не должен меняться при изменении кол-ва складов или товаров.
Я было думал, что круто делать перекрестный запрос, когда у меня строки - сгруппированный ID товара, а столбцы - сгруппированный ID Склада. Так сделать с двумя таблицами а потом их вычесть, математически:
TRANSFORM SUM([Поступления].[Кол-во]) - (SELECT SUM(Выбытия.[Кол-во]) FROM Выбытия WHERE Выбытия.[ID Товара] = Поступления.[ID Товара] AND Выбытия.[ID Категории склада] = Поступления.[ID Категории склада])
SELECT Поступления.[ID Товара]
FROM Поступления
GROUP BY Поступления.[ID Товара], [Поступления].[ID Категории склада]
PIVOT [Поступления].[ID Категории склада];
Ругается на то, что СУБД не распознает первое упоминание Поступления.[ID Товара]. Я методом тыка пришел к мысли, что в Transform Нельзя засунуть математическую операцию. Я прав и изначально иду в неверном направлении?
Готов все сделать по-другому, если подскажете, в каком направлении идти)
Да, и если мы разберемся с этим вопросом, следующий заключается в том, чтобы рабочая версия этого кода учитывала ситуацию, когда в выбытии нет упоминания товара, который упоминается в поступлениях и, следовательно, есть просто пустая ячейка вместо кол-ва поступившего товара.
Заранее спасибо!
http://www.sql.ru/forum/1210187/matematicheskaya-operaciya-v-transform