首页 > 解决方案 > 查找结束日期和开始日期在同一个月的订阅者数量

问题描述

当终止原因连续 12 个月为“xxx”时,我想获取在同一个月终止并重新注册的订阅者的数量。

例子

在上面的示例中,订阅者 '1245' 已因 'xxx' 原因被终止,但在同一个月再次重新注册。我想计算过去 n 个月内这种情况每月发生多少次。

我尝试使用下面的代码来获取 PersonID,但在一个月内无法获得计数。

SELECT DISTINCT PersonID FROM Membership A

INNER JOIN (SELECT StartYrMo FROM Membership) B

ON A.EndYrMo = B.StartYrMo

WHERE A.TermReason = 'xxx'

ORDER BY PersonID

编辑还有更多。我想要所有连续至少 6 个月这样做的 PersonId。含义:人“A”在 201901 年因“xxx”原因被终止。“A”在 201902 年至 201908 年因同样的“xxx”原因再次终止,至少 6 个月。我想要所有这样做的人的身份证。

标签: sqlsql-server

解决方案


要获得重新订阅的人:

select m2.PersonID, m2.StartMonth as ResubscriptionMonth
            from Membership m1 inner join Membership m2
            on m1.PersonID = m2.PersonID
            where m1.TermReason = 'xxx' and m1.EndMonth = m2.StartMonth

按月获取数字:

select Resubscibtions.ResubscriptionMonth, Count(*)
from (
        select m2.PersonID, m2.StartMonth as ResubscriptionMonth
        from Membership m1 inner join Membership m2
        on m1.PersonID = m2.PersonID
        where m1.TermReason = 'xxx' and m1.EndMonth = m2.StartMonth) as Resubscibtions 
group by Resubscibtions.ResubscriptionMonth

推荐阅读