加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver用当前行减去前一行的数据的简单处理方法 -- 不使用循

发布时间:2020-12-12 13:01:13 所属栏目:MsSql教程 来源:网络整理
导读:;with cet -- 1.递归取出需要的数据 as? ( -- 对于CET通用表达式增加自定义列的问题?-- 附带说明 -- 自定义列必须满足下面二者中的一种,否则报错:[在递归查询 "cet" 的列 "CommType" 中,定位点类型和递归部分的类型不匹配。] -- a.自定义列CommType显示转
;with cet
-- 1.递归取出需要的数据
as?
(
-- 对于CET通用表达式增加自定义列的问题?-- 附带说明
-- 自定义列必须满足下面二者中的一种,否则报错:[在递归查询 "cet" 的列 "CommType" 中,定位点类型和递归部分的类型不匹配。]
-- a.自定义列CommType显示转换
-- b.或者在使用自定义列时,前面列的长度必须比后面列的长度大
select *,CONVERT(varchar(10),'CA') as 'CommType' from TB_Biz_Account where Account = 10001
union all
select Acc.*,'CAD') as 'CommType' from TB_Biz_Account Acc inner join cet on Acc.Account = cet.IBAccount
where Acc.Account > 0

)


-- 2.添加序列
select IDENTITY(int,1,1) as 'ID',*
into #tmpAcc
from cet?

where AccountType >= 3 and Account > 1000


-- 3.当前行的Policy 减去 上一行的Policy
select mm.*,
?isnull(mm.Policy,0) - isnull(nn.Policy,0)
from #tmpAcc mm
left join #tmpAcc nn on mm.ID = nn.ID + 1
where isnull(mm.Policy,0) > 0


drop table #tmpAcc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读