在SQL Server表上添加标记,基于对特性



我在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;

相关内容

  • 没有找到相关文章

最新更新