连续3个月或以上没有数据的用户查询出来。。例如有数据
日期             用户号     度数
201301          a              1
201303            a            2
201305            a            1
201308             a           1
201301             b             2
201302            b              2
201307            b              2写一个sql,能把用户b查询出来。条件:连续3个月没有数据。比如b用户    连续3个月急以上就是   3 、4、5.6月
而a没有

解决方案 »

  1.   

    with tb(日期,用户号,度数)
    as(
    select '201301','a',1 union all
    select '201303','a',2 union all
    select '201305','a',1 union all
    select '201308','a',1 union all
    select '201301','b',2 union all
    select '201302','b',2 union all
    select '201307','b',2
    ),
    cte as(
    select *,row=row_number()over(partition by 用户号 order by 日期) from tb
    )
    select 用户号 from cte a where exists(select 1 from cte b where a.row+1=b.row and a.用户号=b.用户号 and left(a.日期,4)+'-'+right(a.日期,2)+'-01'<dateadd(month,-3,left(b.日期,4)+'-'+right(b.日期,2)+'-01'))