我在SQL Server中有一个表,Id, Code和Prod.我想添加一个标志,最终像:
Id Code Prod Flag
0 101 A 0
1 101 B 0
2 101 A 1
3 101 A 1
4 101 B 1
5 160 B 0
6 160 A 0
7 160 B 1
8 190 A 0
9 190 B 0
对于每对Code-Prod(例如:101-A,它有3种情况),标志应该假设第一个Id为0,否则为1。
我该怎么做?
理想的解决方法是使用row_number()窗口函数,结合可更新的CTE:
with upd as (
select *, Row_Number() over(partition by Concat(code,prod) order by id) rn
from t
)
update upd
set flag = case when rn = 1 then 0 else 1 end;