sql - 在 SQL Server 2008 中遇到值 1 时重置计数的正确语法是什么?
问题描述
rank()
在 SQL Server 2008(无Lag
功能)中满足值 1 时如何重置?
从代码中可以看出,“Column_Reference”列不会产生我想要的结果。知道如何解决这个问题吗?
case when
(case when Datediff(day, s2.DutyStartDateLocal, s1.DutyStartDateLocal) = 1 then 1
else 0
end) = 0 then 1--+ (-1*row_number() OVER (PARTITION BY s1.CREWID order by s1.CREWID,s1.DutyStartDateLocal))
ELSE
row_number() OVER (PARTITION BY s1.CREWID order by s1.CREWID,s1.DutyStartDateLocal)
END as Column_Reference
Current result of column_reference Ideal result
--------------------------------------------------
1 1
2 2
3 3
4 4
1 1
6 2
7 3
8 4
9 5
1 1
11 2
12 3
13 4
14 5
解决方案
升级到更新版本的 SQL Server!至少会支持!
您想将组分配给范围,然后使用row_number()
. 不幸的是,不允许累积总和,但您可以使用apply
.
我无法关注您关心的列和表。有一个排序列非常重要——我将调用它,DutyStartDateLocal
但可以是多个列。
结构是:
select t.*,
row_number() over (partition by t.crewid, g.grp order by DutyStartDateLocal) as seqnum
from t cross apply
(select count(*) as grp
from t t2
where t2.crewid = t.crewid and
t2.DutyStartDateLocal <= t.DutyStartDateLocal and
t2.colref = 0
) g ;
推荐阅读
- python-3.x - anaconda 没有安装 numba 0.43
- angular - 角度辅助路由在模块内不起作用
- docker - FFmpeg concat 产生不良视频
- angular - 未捕获的类型错误:无法在 getOriginalError 处读取未定义的属性“ngOriginalError”-当 httpClient 返回字符串时
- twitch - Twitch API:是否可以检索当前观看流媒体的人的设备 ID?
- python-3.x - 标准化 PC 的 KMeans 聚类图
- selenium - Appium Parallel Test Execution 删除一个设备的驱动程序,显示会话已终止或未启动
- c# - FakeItEasy:根据表达式返回不同的对象
- python - 在将对象附加到列表时删除引号
- haskell - 如何检查一个 IO() 是否等价于另一个 IO()?