首页 > 解决方案 > 更新表中的不同行数

问题描述

我有一张这样的桌子

No     Name
1       A
1       A
1       A
1       A 
1       B
1       B
2       A
2       A
2       A
3       A

我需要这样的结果

   No     Name   Seq
    1       A     4
    1       A     4
    1       A     4
    1       A     4
    1       B     2 
    1       B     2
    2       A     3
    2       A     3
    2       A     3
    3       A     1

如果NoName相同意味着更新seq列中的计数。

我尝试了以下查询

Select LEAD(Count(No),1) Over (PARTITION BY No,Name Order by No,Name) Seq

请帮助解决这个问题。

标签: sqlsql-server

解决方案


使用count()

select no, name, count(*) over (partition by no, name) as seq

如果要更新表,则可以使用cte

with u_cte as (
     select no, name, count(*) over (partition by no, name) as seq
     from table t 
    )
update t
       set t.seq = u.seq  
from u_cte u inner join
     table t
     on t.no = u.no and t.name = u.name;

推荐阅读