SQL-запросы для сбора данных для общих бизнес-отчетов - PullRequest
0 голосов
/ 26 июня 2019

У меня есть база данных с таблицами «Главная книга», «Типы счетов» и «План счетов».Структура выглядит следующим образом:

«Типы счетов» :

AcctTypeID Autonumber Long Integer Not Null Primary Key
TypeName Text(50) Not Null
Description Memo
Credit Yes/No Not Null Default Yes

«План счетов» :

AcctID Long Integer Not Null Primary Key
AcctName Text(30) Not Null
Description Memo
AcctType Long Integer Not Null

'Главная книга' :

EntryID Autonumber Long Integer Not Null Primary Key
EntryDate Date/Time Not Null Default #1/1/1900#
EntryType Text(12) Not Null Default "DC"
Description Memo
FromAcct Long Integer Not Null
ToAcct Long Integer Not Null
Taxable Yes/No Not Null Default No

Отношения между таблицами :

 One-to-Many from 'Chart of Accounts'->AcctID to 'General Ledger'->FromAcct
 One-to-Many from 'Chart of Accounts'->AcctID to 'General Ledger'->ToAcct
 One-to-Many from 'Account Types'->TypeID to 'Chart of Accounts'->AcctType

Мне нужно начать с выполненияследующие требования в двух разных SQL-запросах:

  1. Если ToAcct.AcctType == (Income OR Asset), тогда добавьте 'General Ledger' .Amount к TotalRevenue

  2. Если ToAcct.AcctType == (Расходы ИЛИ Ответственность), затем добавить 'Главная книга'. Сумма в TotalExpenses

Я пробовал эти два запроса SQL, прежде чем я изменилмои "Типы счетов", чтобы указать, являются ли они доходом / активами или расходами / обязательствами:

  1. ВЫБЕРИТЕ СУММУ (IIF ((Credit = TRUE), Сумма, 0)) AS ДоходВсего из GeneralLedger;

  2. ВЫБЕРИТЕ СУММУ (IIF ((Credit = FALSE), Сумма, 0)) AS ExpenseTotal FROM GeneralLedger

Эти запросы работали, ноЯимел дополнительный флажок в форме Главной книги для «Кредит».Нормализуя, я подумал, что для учетной записи было бы лучше определить, является ли это дебетовым или кредитным счетом.

После нескольких поисков в Google и чтения вопросов «Я не знаю, сколько» иответы, я не вижу ничего похожего на то, что я пытаюсь сделать здесь.

Вывод должен дать мне информацию, необходимую для создания отчетов о прибылях и убытках, отчете о прибылях и убытках, бизнесе и налогах.Я полагаю, что могу получить запросы SQL для получения сумм, основанных на их счете, но я не уверен, как получить в поле «Дебет» типов счетов, чтобы определить, следует ли добавлять или вычитать сумму.

При необходимости я могу сделать это в приложении C #, которое будет лежать в основе этой базы данных.Если бы я мог сделать это на уровне SQL-запросов, я бы смог использовать его в проекте в качестве представления вместо необходимости кодировать его.Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 26 июня 2019

После еще нескольких поисков я нашел ответ, что мне нужно выполнить 4 разных запроса, чтобы выполнить то, что я пытался. Соответствующими запросами оказались:

Для общих расходов:

SELECT SUM(Amount) AS TotalExpense
FROM GeneralLedger INNER JOIN ChartOfAccounts ON ChartOfAccounts.AcctID=GeneralLedger.ToAcct
WHERE ChartOfAccounts.AcctType = 4;

Для общего дохода:

SELECT SUM(Amount) AS TotalRevenue
FROM GeneralLedger INNER JOIN ChartOfAccounts ON ChartOfAccounts.AcctID=GeneralLedger.ToAcct
WHERE ChartOfAccounts.AcctType = 3;

Для общих обязательств:

SELECT SUM(Amount) AS TotalLiabilities
FROM GeneralLedger INNER JOIN ChartOfAccounts ON ChartOfAccounts.AcctID = GeneralLedger.ToAcct
WHERE ChartOfAccounts.AcctType = 2;

Для всех активов:

SELECT SUM(Amount) AS TotalAssets
FROM GeneralLedger INNER JOIN ChartOfAccounts ON ChartOfAccounts.AcctID = GeneralLedger.ToAcct
WHERE ChartOfAccounts.AcctType = 1;

Это был просто вопрос, как заставить ВНУТРЕННЕЕ СОЕДИНЕНИЕ правильно работать с моим предложением WHERE. Это простые вещи, которые убивают ...

Наиболее полезной оказалась ссылка: StackOverflow: sql - предложение INNER JOIN WHERE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...