sql row_number 保持不变,除非满足条件

sql row_number stay the same unless a criteria is met

第一次 post 来这里,我进行了大量搜索以找到它,但不知道要搜索的术语。我在 SQL Server 2012 中有一个 table,其中包含具有以下列的时间表数据:Name, ID, ENTEREDONDTM, EVENTDATE, STARTDTM, ENDDTM, STARTREASON, ENDREASON

我正在尝试做一个 row_number,其中 row_number 中的值保持不变,除非 StartReason = 'newShift' 在这种情况下我希望它增加 1。

我的最终目标是找到每个班次的总班次长度,并且我知道如何根据 startdtmenddtm 进行这些计算,但是当前没有包含 [=17] 的列=] 让我分组。

您可以使用 Rank () 窗口函数,按 StartReason 分区并添加 +1(保留第一个)。 在使用这个值之前,你可以用一个案例来比较这个值。

示例:case StartReason when 'newShift' then 1 else Rank () over (Partition by StartReason ) +1