У меня установлена база данных Access с ежемесячными финансовыми данными, результаты которой представлены в нескольких таблицах: - Балансы счетов: № счета, BegBal, EndBal, Месяц, Год - 1 запись на счет в месяц / год - Номера счетов: Номер счета, Описание , Позиция CF, позиция # - Ca sh Def Def: позиция позиции CF, описание
Отчет о расходе Ca sh аналогичен следующему: позиция позиции CF 1 "Описание" Сумма всех счетов для Позиция CF 1 (EndBal-Beg Bal) Позиция CF 2 «Описание» Сумма всех счетов для позиции CF 2 (EndBal-Beg Bal)…
Ca sh отчет о потоке за данный месяц был довольно прямо. У меня проблемы с созданием, который также включает столбец для результатов с начала года. Для этого требуется, чтобы я использовал записи таблицы «Баланс счета» за 2 разных месяца (достаточно легко добавить к критериям запроса выбора), но не уверен, как: 1 - создать выражение, которое ссылается на EndBal из записи текущего месяца и начальный баланс из Запись за январь месяц 2 - создайте отчет таким образом, чтобы суммирование правильно обрабатывало тот факт, что на счет приходится 2 записи баланса счета (1 для января и 1 для текущего месяца). 3 - Сначала я подумал об использовании Self Join, но возникает еще одна сложность, поскольку учетные записи можно добавлять и останавливать. Таким образом, мы должны учитывать случаи, когда номер счета не в текущем месяце, а в январе, и наоборот. Тогда другой месяц будет иметь значение 0.
РЕДАКТИРОВАТЬ 4/9/2020
ОК, так что я думаю, что в основном решил свою проблему. Мне потребовалось ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ на той же таблице, чтобы получить желаемые результаты - но, конечно, Access не поддерживает это напрямую - нужно было сделать СОЕДИНЕНИЕ ВЛЕВОГО И ВПРАВО НАРУЖНОГО СОЕДИНЕНИЯ.
См. Ниже для SQL
SELECT a.RecDate, a.StoreID, a. [Account #], a. [Начальный баланс], a. [Конечный баланс], b.RecDate, b. StoreID, b. [Account #], b. [Начальный баланс] FROM ((ВЫБЕРИТЕ * ОТ AccountBalances WHERE (AccountBalances.RecDate = [TempVars]! [VarDate] И AccountBalances.StoreID = [TempVars]! [VarStoreID]))) AS СЛЕДУЮЩЕЕ ВНЕШНЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ СЧЕТА AccountBalances, ГДЕ (AccountBalances.RecDate = [TempVars]! [varStartDate] И AccountBalances.StoreID = [TempVars]! [varStoreID])) AS b ON (a. [Account #] = b. [ Account Account]])
UNION
SELECT a.RecDate, a.StoreID, a. [Account #], a. [Начальный баланс], a. [Конечный баланс], b. RecDate, b.StoreID, b. [Account #], b. [Начальный баланс] FROM ((ВЫБЕРИТЕ * ОТ AccountBalances WHERE (AccountBalances.RecDate = [TempVars]! [VarDate] И AccountB alances.StoreID = [TempVars]! [varStoreID])) В КАЧЕСТВЕ ПРАВИЛЬНОГО ВНЕШНЕГО СОЕДИНЕНИЯ (SELECT * FROM AccountBalances WHERE (AccountBalances.RecDate = [TempVars]! [varStartDate] И AccountBalances.StoreID = [TempVars]! [varStoreID])) AS b ON (a. [Account #] = b. [Account #])); Mike