如何根据日期选择增加计数器



>我有一个chequeBounce列的表格

账号

ID,账号名,

中文名,中文名,中文名

现在,我正在创建一个查询,该查询在一个月内产生Accountid计数。我需要根据用户选择的日期将当前Accountid月份的计数与上个月的值一起增加。

任何人都可以指导吗?

很难确切地知道你想要从你的问题中得到什么,但我自己做了一些假设,并提出了一个可能做你想要的存储过程。我选择存储过程的原因是,您暗示应该有一个用户定义的变量。
因此,首先,创建此存储过程:

CREATE PROCEDURE dbo.Get_Count 
@month1 int,
@month2 int
AS
SELECT [source].AccountName, sum([source].chamount) as [sum of amount], count([source].AccountID) as [no of AccountID in specified months] FROM
(SELECT 
AccountID, AccountName, chno, chamount 
FROM chequeBounce 
WHERE 
MONTH(Chdate) = @month1
UNION ALL
SELECT 
AccountID, AccountName, chno, chamount 
FROM chequeBounce 
WHERE 
MONTH(Chdate) = @month2) as [source]
GROUP BY [source].AccountID, [source].AccountName, [source].chamount
RETURN 0 

此存储过程采用两个参数:@month1@month2。然后它运行两个查询。一个具有与@month1匹配的 where 语句,另一个具有完全相同的语句,但在@month2.然后,它将两者合并到一个查询中,并计算指定月份每个AccountID上有多少条目。它以同样的方式总结金额。您可以通过键入exec Get_Count后跟您要依靠的两个月来运行该过程。像这样,如果你想要二月和三月:

exec Get_Count 2, 3

上述查询的结果可能如下所示:

AccountName                                        sum of amount         no of AccountID in specified months
-------------------------------------------------- --------------------- ---------------
NameOne                                            200.00                2
NameTwo                                            100.00                1
NameThree                                          100.00                1
NameFour                                           200.00                2
NameFive                                           100.00                1

在此示例中,no of AccountID in specified months是指定月份 (2, 3) 每个账户 ID 上出现次数的计数。

这是我使用的数据:

create table chequeBounce (
AccountID int,
AccountName varchar(50),
Chdate date,
chno int,
chamount money,
)
insert into chequeBounce VALUES
(1, 'NameOne', GETDATE(), 123, 100)
,(2, 'NameTwo', GETDATE(), 123, 100)
,(3, 'NameThree', GETDATE(), 123, 100)
,(4, 'NameFour', GETDATE(), 123, 100)
,(5, 'NameFive', GETDATE(), 123, 100)
,(1, 'NameOne', DATEADD(mm, -1, GETDATE()), 123, 100)
,(2, 'NameTwo', DATEADD(mm, -2, GETDATE()), 123, 100)
,(4, 'NameFour', DATEADD(mm, -4, GETDATE()), 123, 100)
,(5, 'NameFive', DATEADD(mm, -5, GETDATE()), 123, 100)
,(1, 'NameOne', DATEADD(mm, -2, GETDATE()), 123, 100)
,(2, 'NameTwo', DATEADD(mm, -3, GETDATE()), 123, 100)
,(4, 'NameFour', DATEADD(mm, -5, GETDATE()), 123, 100)
,(4, 'NameFour', DATEADD(mm, -3, GETDATE()), 123, 100)
,(4, 'NameFour', DATEADD(mm, -1, GETDATE()), 123, 100)
,(5, 'NameFive', DATEADD(mm, -1, GETDATE()), 123, 100)
,(1, 'NameOne', DATEADD(mm, -5, GETDATE()), 123, 100)
,(3, 'NameThree', DATEADD(mm, -1, GETDATE()), 123, 100)
,(4, 'NameFour', DATEADD(mm, -1, GETDATE()), 123, 100)
,(5, 'NameFive', DATEADD(mm, -3, GETDATE()), 123, 100)
如果我

没有说清楚,请随时提出任何问题:)

最新更新