第一次发布在这里,我已经做了一堆搜索来找到这个,但不知道要搜索的术语。我在SQL Server 2012中有一个包含时间表数据的表,其中包含以下列:Name, ID, ENTEREDONDTM, EVENTDATE, STARTDTM, ENDDTM, STARTREASON, ENDREASON
我试图做row_number
,其中row_number中的值保持不变,除非StartReason = 'newShift'
在这种情况下我希望它增加1。
我的最终目标是找到每班次的总班次,我知道如何根据startdtm
和enddtm
进行这些计算,但目前没有shiftID
的列让我分组。
答案 0 :(得分:0)
您可以使用Rank ()
窗口函数,由StartReason分区并添加+1(保留第一个)。
在使用此值之前,您可以使用大小写来比较值。
例如:case StartReason when 'newShift' then 1 else Rank () over (Partition by StartReason ) +1