我只有交易信息。
我正在试图弄清楚如何编写一个查询,让我找到动态变化的帐户列表中前两个月的结束余额(最好是11个)。
我想到的方式,但我不确定如何执行将是:
SELECT AcctName, CurrTotal - SUM(transactions from the last two months),
CurrTotal - SUM(transactions from the last month), CurrTotal;
问题是我不知道如何仅请求这些特定交易的总和。 (部分原因是我不知道如何在SQL中找到当前日期,这样会有所帮助)
例如,我有一个会计科目表,其中信息包括“AcctName”和“CurrTotal”。我有另一个日记帐分录表,其中包括日记帐分录的数量,条目的日期,以及是信用卡还是借记卡。
AcctName CurrTotal
Checking 45,325
Savings -65,213
Petty Cash 213,123
EntryID Amount Account Date Credit/Debit
1 1,234 Checking 10/15/15 Debit
2 15,235 Savings 10/4/15 Credit
3 32,134 Checking 9/30/15 Debit
4 145,111 Savings 9/28/15 Credit
5 16,234 Savings 9/25/15 Debit
6 1,000 Petty Cash 9/14/15 Debit
7 2,532 Checking 9/1/15 Debit
8 43,213 Savings 8/22/15 Credit
9 100,323 Checking 8/14/15 Debit
预期交易
AUG SEPT OCT
Checking -90,898 9,425 45,325
Savings 122,112 78,899 -65,213
Petty Cash 212,123 213,123 213,123
答案 0 :(得分:0)
您可以使用条件聚合:
DECLARE @last_two_months DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 2, 0)
DECLARE @last_month DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)
SELECT
coa.AcctName,
coa.CurrTotal - SUM(CASE WHEN je.Date >= @last_two_months THEN je.Amount ELSE 0 END) AS [AUG],
coa.CurrTotal - SUM(CASE WHEN je.Date >= @last_month THEN je.Amount ELSE 0 END) AS [SEPT],
coa.CurrTotal AS [OCT]
FROM ChartOfAccounts coa
INNER JOIN JournalEntries je
ON je.Account = coa.AcctName
GROUP BY
coa.AcctName, coa.CurrTotal