Sql server 过去12个月无活动的最大月Nbr

Sql server 过去12个月无活动的最大月Nbr,sql-server,tsql,Sql Server,Tsql,我有一个包含以下项目的数据集: 月年 帐户编号 总收入 如果某个账户没有给定月份的总收入,则该账户/月份没有记录 我想知道每个帐户-该帐户连续几个月没有收入的最大值是多少 例如,如果账户123在过去12年中每个月都有收入,则其计数将为0 如果账户987连续4个月有收入,则连续5个月无收入,剩余月份的收入为5 如果账户657每隔一个月有一次活动,则其计数将为1,b/c 1是连续几个月无活动的最大值 提前谢谢 样本数据 **Accnt** |**Month-Yr** |**Revenue**

我有一个包含以下项目的数据集:

  • 月年
  • 帐户编号
  • 总收入
  • 如果某个账户没有给定月份的总收入,则该账户/月份没有记录

    我想知道每个帐户-该帐户连续几个月没有收入的最大值是多少

    例如,如果账户123在过去12年中每个月都有收入,则其计数将为0

    如果账户987连续4个月有收入,则连续5个月无收入,剩余月份的收入为5

    如果账户657每隔一个月有一次活动,则其计数将为1,b/c 1是连续几个月无活动的最大值

    提前谢谢

    样本数据

    **Accnt**  |**Month-Yr**   |**Revenue**
    123        |8/1/2016       |1000
    123        |9/1/2016       |1500
    123        |10/1/2016      |500
    123        |11/1/2016      |100
    123        |12/1/2016      |250
    123        |1/1/2017       |750
    123        |2/1/2017       |900
    123        |3/1/2017       |700
    123        |4/1/2017       |1200
    123        |5/1/2017       |250
    123        |6/1/2017       |750
    123        |7/1/2017       |900
    123        |8/1/2017       |700
    123        |9/1/2017       |1200
    987        |8/1/2016       |100
    987        |9/1/2016       |250
    987        |10/1/2016      |750
    987        |11/1/2016      |900
    987        |5/1/2017       |700
    987        |6/1/2017       |1300
    987        |7/1/2017       |250
    987        |8/1/2017       |750
    987        |9/1/2017       |900
    657        |8/1/2016       |700
    657        |10/1/2016      |1200
    657        |12/1/2016      |100
    657        |2/1/2017       |250
    657        |4/1/2017       |750
    657        |6/1/2017       |900
    657        |8/1/2017       |700
    

    这个怎么样?(因为您发布了最少的信息,所以我保留在解释时创建自己的DDL的权利)


    我认为,如果您包含一些示例数据和预期结果,以及您编写的不起作用的代码/查询,您会得到更多答案。
    Accnt 123 would be 0 months
    Accnt 987 would be 5 months
    Accnt 657 would be 1 month
    
        IF OBJECT_ID ('tempdb..#') IS NOT NULL
            DROP TABLE #sales
        GO 
        CREATE TABLE #sales
            (Dte datetime
            ,amt int
            ,id int
            ,rownum int identity PRIMARY KEY
            )   
    
        INSERT INTO #sales
        SELECT '9/1/17',1200, 987
        INSERT INTO #sales
        SELECT '10/1/17',1100, 987
        INSERT INTO #sales
        SELECT '11/1/17',1000, 987
        INSERT INTO #sales
        SELECT '5/1/18',1900, 987
        INSERT INTO #sales
        SELECT '6/1/18',120, 987
    
        INSERT INTO #sales
        SELECT '4/1/17',100, 657
        INSERT INTO #sales
        SELECT '5/1/17',190, 657
        INSERT INTO #sales
        SELECT '7/1/17',12, 657
    
        GO
    
        SELECT MAX(DATEDIFF(dd,a.dte,b.dte)), a.id
        FROM #sales a
        INNER JOIN #sales b
            ON a.rownum = b.rownum-1
            AND a.id =b.id
        GROUP BY a.id