row_number()
なので、それほど近くにはありません。 2つのグループによるシーケンスを同時に追跡することはできません。 PARTITION BY tm_nl_fixedid ORDER BY date RESTART ON GAP
存在しない、そのようなものはありません。
Itzik Ben-Ganには、直面している島とギャップの問題に対する解決策があります(実際にはいくつかの解決策があります)。アイデアは、主な基準(日付)で行を並べ替えてから、基準と主な基準を分割することです。序数の違いは、同じ分割基準と日付系列に属しているため、同じままです。
with cte as
(
select *,
-- While order by date and order by something-else, date
-- run along, they belong to the same sequence
row_number() over (order by tm_date)
- row_number() over (order by tm_nl_fixedid, tm_date) grp
from trackingMessages
)
select *,
-- Now we can get ordinal number grouped by each sequence
row_number() over (partition by tm_nl_fixedid, grp
order by tm_date) rn
from cte
order by tm_date
これは、SQL Server MVPディープダイブの第5章で、島とギャップの問題に対するいくつかの解決策があります 。