除非符合条件,否则sql row_number保持不变

时间:2016-02-22 15:31:54

标签: sql sql-server row-number

第一次发布在这里,我已经做了一堆搜索来找到这个,但不知道要搜索的术语。我在SQL Server 2012中有一个包含时间表数据的表,其中包含以下列:Name, ID, ENTEREDONDTM, EVENTDATE, STARTDTM, ENDDTM, STARTREASON, ENDREASON

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

我的最终目标是找到每班次的总班次,我知道如何根据startdtmenddtm进行这些计算,但目前没有shiftID的列让我分组。

1 个答案:

答案 0 :(得分:0)

您可以使用Rank ()窗口函数,由StartReason分区并添加+1(保留第一个)。 在使用此值之前,您可以使用大小写来比较值。

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