Tsql SQL-从条件开始添加顺序计数器列

Tsql SQL-从条件开始添加顺序计数器列,tsql,Tsql,我有一张桌子: id market 1 mkt1 2 mkt2 3 mkt1 4 special 5 mkt2 6 mkt2 7 special 如何从表中选择所有列,同时添加一个顺序计数器列,该列在触发条件后开始计数?在本例中,当市场==特殊: 这里有一个选项,将行号与union all一起使用: 编辑后使用min…我对我的问题做了一点修改-您可以更新在线演示吗?谢谢大家!@刚刚看到你的编辑。您可以在cte中使用m

我有一张桌子:

  id   market
  1    mkt1
  2    mkt2
  3    mkt1
  4    special
  5    mkt2
  6    mkt2
  7    special
如何从表中选择所有列,同时添加一个顺序计数器列,该列在触发条件后开始计数?在本例中,当市场==特殊:

这里有一个选项,将行号与union all一起使用:


编辑后使用min…

我对我的问题做了一点修改-您可以更新在线演示吗?谢谢大家!@刚刚看到你的编辑。您可以在cte中使用min来获取条件的第一个实例。如果您感兴趣,可以在这里使用另一个实例@Johnfi也添加了一个使用相同方法的答案。话虽如此,另一个答案似乎也适用。希望双方都能帮忙!
 id   market  count
 1    mkt1     0
 2    mkt2     0
 3    mkt1     0
 4    special  1
 5    mkt2     2
 6    mkt2     3
 7    special  4
with cte as (
  select min(id) as id from t where market = 'special'
)
select t.id, t.market, 0 rn
from t join cte on t.id < cte.id
union all
select t.id, t.market, row_number() over (order by t.id) rn
from t join cte on t.id >= cte.id