首页 > 解决方案 > 是否有一个 tSQL 函数在每次更改后创建一个计数器,例如由 Value1 排序的 Value2

问题描述

我必须开发一个 SQL 脚本,该脚本在每次更改由另一列排序的表的值后创建计数器。

请参阅示例:如果可能,应由 tsQL 计算列“ExpectedCalculatedValue”

我已经尝试过诸如“Rank”或“Dense_Rank”之类的功能,但我无法解决问题。

DECLARE @testTab as TABLE (ID int, [From] datetime, Until datetime, TestID int, 
ExpectedCalculatedValue int)

--TEST DATA
INSERT INTO @testTab VALUES (100, '2019-4-11 11:00', '2019-4-11 11:01', 0, 1)
INSERT INTO @testTab VALUES (100, '2019-4-11 11:01', '2019-4-11 11:11', 200, 2)
INSERT INTO @testTab VALUES (100, '2019-4-11 11:11', '2019-4-11 11:15', 200, 2)
INSERT INTO @testTab VALUES (100, '2019-4-11 11:15', '2019-4-11 11:22', 100, 3)
INSERT INTO @testTab VALUES (100, '2019-4-11 11:22', '2019-4-11 11:45', 200, 4)

select * 
from @testTab a
order by a.[From]


标签: sqltsql

解决方案


select , sum(case when base.pVal = base.TestID then 0 else 1 end) over(order by base.[From]) as [Counter] from (select aa. , lag(aa.TestID, 1, null) over (按 aa.[From] 排序)作为来自 @testTab aa 的 [pVal])基础


推荐阅读