我目前正在尝试复制旧报告,该报告过去常常产生一系列收藏品。然而,这不是一个月的标准月份。以下是基于excel的报告的屏幕截图。
蓝色部分基于简单查询,并提供用于启动的数据集(示例):
SELECT COUNT(AccountNo) AS Number, SUM(Balance) AS Value, DATENAME(MM,DateOpened) AS Month, DATEPART(Y,DateOpened) AS Year FROM tblAccounts
GROUP BY DATENAME(MM,DateOpened), DATEPART(Y,DateOpened)
表格非常基本:
AccountNo | Balance | DateOpened
12345 | 1245.55 | 01/01/2015
我努力让它在滚动的基础上计算出这几个月,因此2011年4月的第1个月将是这些文件的第一个月(4月付款),第2个月将是5月份的付款4月开户(我希望很清楚)。
所以这意味着4月的第1个月将是4月,11月的第1个月将是11月。付款存储在表格中tblPayments
AccountNo | DatePayment | PaymentValue
12345 | 02/02/2015 | 15.99
请问我是否还不够清楚
答案 0 :(得分:0)
假设您有一个名为" DatePayment"的列,您应该执行以下操作:
SELECT COUNT(AccountNo) AS Number, SUM(Balance) AS Value,
DATENAME(MM,DateOpened) AS Month, DATEPART(Y,DateOpened) AS Year,
DATEDIFF(MONTH, DateOpened, DatePayment) AS MonthN
FROM [...]
GROUP BY DATENAME(MM,DateOpened), DATEPART(Y,DateOpened),
DATEDIFF(MONTH, DateOpened, DatePayment)
DATEDIFF只计算帐户开立日期和付款日期之间的月份。请注意,您可能希望将DateOpened更改为DATEDIFF计算中的月份中的第1个。
在您的查询的FROM [...]
部分,您需要在付款表和包含帐户的表格之间加入,以便能够将DateOpened
与DatePayment
进行比较。您应该在AccountNo列上加入它们。这看起来像这样:
FROM Accounts INNER JOIN Payments ON Accounts.AccountNo = Payments.AccountNo
执行此操作后,您需要确保对两个表中存在的列的所有引用都是完全限定的。这意味着COUNT(AccountNo)
应更改为COUNT(Accounts.AccountNo)
等。