输入表
ID. Col1.
1. TARGET.
2. A
3. A
4. TARGET.
5. A
6. A
7. TARGET
所需的输出:
ID. Col1. Col2
1. TARGET. 1
2. A. 1
3. A. 1
4. TARGET. 2
5. A. 2
6. A. 2
7. TARGET. 3
答案 0 :(得分:4)
SELECT *, SUM(CASE WHEN Col1 = 'Target' THEN 1 ELSE 0 END ) OVER (ORDER BY Id) FROM @a
SUM(..) OVER (ORDER BY .. )
等于 SUM(...) OVER (ORDER BY .. ROWS UNBOUNDED PRECEDING AND CURRENT ROW)
答案 1 :(得分:1)
您也可以使用apply
:
select t.*, t1.Col2
from table t outer apply
( select count(*) as Col2
from table t1
where t1.id <= t.id and t1.col1 = 'TARGET.'
) t1;
但是,累计和也是一种很好的方法。