sql - 是否有一个 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]
解决方案
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])基础
推荐阅读
- excel - Excel:需要在 if 语句中识别为字符串而不是公式
- c - 不明白什么是 fflush() 函数
- java - 在 iOS/Swift 中创建并导出为 Java 无法识别的 base64 的 RSA 公钥
- authentication - API 设计:Auth0 用于身份验证和内部授权
- java - “评估失败,因为线程未挂起” - 这在我的代码上下文中意味着什么?
- c++ - 为什么 Go 套接字比 C++ 套接字慢?
- angular - 路由执行组件先于所有
- php - 不从反应到 php 脚本发送数据 POST
- sql - 如何按年龄计算过去 12 个月的收入
- python - 在 Azure API 上托管 Flask(python) API