60天的新号 消失号

晴天帮助解决,多次试用后改动了一处。

记录以备以后参考。

表jjf4178,现有列:起始时间,对方号码,要新增列:新生号 ,消失号

alter tablejjf4178 add 新生号 nvarchar(255),消失号nvarchar(255)

go

;with cte as(

select DENSE_RANK()over(orderby convert(varchar(10),起始时间,120))rn,ROW_NUMBER()over(orderby 起始时间)rn1,convert(varchar(10),起始时间,120)日期,起始时间,对方号码from jjf4178

),cte1 as(

select rn,rn1,日期,起始时间,对方号码,

(case when not exists(select 1 from cte where a.rn<60or 对方号码=a.对方号码and(rn<a.rnand rn>=a.rn-60or rn=a.rnand rn1<a.rn1))then 对方号码 end)新生号

from ctea

),cte2 as(

select rn,rn1,日期,起始时间,对方号码,新生号,

(case when not exists(select 1 from cte where 对方号码=a.对方号码and(rn<a.rnand rn>=a.rn-60or rn=a.rnand rn1<a.rn1))then 对方号码 end)f

from cte1a

)

update tset 新生号=b.新生号,消失号=b.消失号

from jjf4178t inner join(

select 日期,起始时间,对方号码,新生号,

stuff((select','+ffrom cte2 b where rn=a.rn-60and not exists(select 1 from cte2 where 对方号码=b.fand rn>b.rnand rn<=a.rnor rn=a.rnand rn1<a.rn1)for xml path('')),1,1,'')消失号

from cte2a

)b on t.起始时间=b.起始时间

go

select 起始时间,对方号码,新生号,消失号from jjf4178 order by 起始时间



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值