sql-server – 基于列值更改的T-SQL递增计数器
发布时间:2020-12-12 16:19:33 所属栏目:MsSql教程 来源:网络整理
导读:我有如下的样本表.该表按另一个未显示的列排序.我需要根据值列中的更改来增加计数器列值.请参阅下面的示例.如何在T-SQL(SQL Server 2014)中完成. ID Value1 32 33 24 25 26 37 08 0 预期产出: ID Value Counter1 3 12 3 13 2 24 2 25 2 26 3 37 0 48 0 4 解
我有如下的样本表.该表按另一个未显示的列排序.我需要根据值列中的更改来增加计数器列值.请参阅下面的示例.如何在T-SQL(SQL Server 2014)中完成.
ID Value 1 3 2 3 3 2 4 2 5 2 6 3 7 0 8 0 预期产出: ID Value Counter 1 3 1 2 3 1 3 2 2 4 2 2 5 2 2 6 3 3 7 0 4 8 0 4 解决方法在SQL Server 2012及更高版本中,您可以拥有1)分析功能,以及2)运行总计:declare @t table ( Id int primary key,Value int not null ); insert into @t (Id,Value) values (1,3),(2,(3,2),(4,(5,(6,(7,0),(8,0); select sq.Id,sq.Value,sum(case when sq.pVal = sq.Value then 0 else 1 end) over(order by sq.Id) as [Counter] from ( select t.Id,t.Value,lag(t.Value,1,null) over(order by t.Id) as [pVal] from @t t ) sq order by sq.Id; 此外,该解决方案不依赖于没有间隙的ID列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |