根据两个日期字段在 2018 年 1 月 1 日 -2020 年 12 月 31 日之间执行每月不同受益人计数
使用 Microsoft SQL Server 在 2018 年 1 月 1 日至 2020 年 12 月 31 日之间执行每月不同受益人计数。
下面是我的代码,但我必须每个月更改它,有什么方法可以使用 2 个不同的日期字段对 2018 年到 2020 年的每个月进行分组?
SELECT COUNT(distinct BEN_ID)
FROM LDS_2017andbeyond
WHERE
[DTE_FIRST_SVC] between '2018-01-01' and '2018-01-31'
AND
[DTE_LAST_SVC] between '2018-01-01' and '2018-01-31'
Perform a monthly distinct beneficiary count between 1/1/2018 -12/31/2020 using Microsoft SQL Server.
Below is my code but I have to change it for every month, is there any way to group by each month from 2018 to 2020 with 2 different date fields?
SELECT COUNT(distinct BEN_ID)
FROM LDS_2017andbeyond
WHERE
[DTE_FIRST_SVC] between '2018-01-01' and '2018-01-31'
AND
[DTE_LAST_SVC] between '2018-01-01' and '2018-01-31'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对同一个月的日期进行分组的一种简单方法是
One simple way to group dates on the same month is the EOMONTH function. It'll return the last day of the month for a date.
一种解决方案是使用递归 CTE。您从锚查询开始,并在递归部分中使用 DATEADD 函数将其与其自身联合。即使计数为 0,此解决方案也会为您提供每个月的信息,而不是仅对数据进行分组,这将忽略任何不存在的月份。
像这样的东西:
One solution would be to use a recursive CTE. You start with an anchor query and union it to itself with a DATEADD function in the recursive portion. This solution will give you every month month, even if the count is 0, as opposed to just grouping on the data, which will omit any months that arn't present.
Something like: