我使用信用卡帐户。每天,每个帐户都会向我们的数据库添加一条记录。有关联的数据(与此无关),但是有一个列显示布尔值(1,0)(如果该帐户处于活动状态或现在),以及该记录的日期
数据看起来像这样
ACCOUNT DATA1 DATA2 ISACTIVE INSERT DATE
1234 XXX XXXX 1 5/1/2019
1234 XXX XXXX 1 5/2/2019
1234 XXX XXXX 1 5/3/2019
1234 XXX XXXX 1 5/4/2019
5678 XXX XXXX 1 5/1/2019
5678 XXX XXXX 1 5/2/2019
5678 XXX XXXX 1 5/3/2019
5678 XXX XXXX 1 5/4/2019
我希望计算出大约18个月以来每月活跃的帐户数量(基于每月1号)。我不确定如何为此编写代码。
感谢您的帮助
答案 0 :(得分:0)
您可以尝试按月份(INSERT DATE)进行分组:
SELECT month([INSERT DATE]) as month_num,count(distinct ACCOUNT) as ACCOUNT_num
from table
group by month([INSERT DATE])
答案 1 :(得分:0)
尝试一下:
SELECT YEAR([INSERT DATE]) AS [Year], MONTH([INSERT DATE]) AS [Month], COUNT(DISTINCT [Account]) AS [UniqueActiveAccounts]
FROM [YourTableName]
WHERE [ISACTIVE] = 1 AND [INSERT DATE] > DATEADD(MONTH,-19,GETDATE())
GROUP BY YEAR([INSERT DATE]), MONTH([INSERT DATE])
此查询从运行此查询起18个月后获取数据。您可以在查询的 DATEADD 部分中调整此时间段。
您当然需要在 FROM 之后插入表格名称。
答案 2 :(得分:0)
SELECT Count(DISTINCT account)
FROM t
WHERE isactive = 1
GROUP BY Month(insert_date),
Year(insert_date)