Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL - Substitui linhas repetidas por valores nulos, preservando o número de linhas


Você pode fazer isso enumerando as linhas dentro de um ano. Em seguida, atualize todos, exceto o primeiro:
with toupdate as (
      select t.*, row_number() over (partition by [year] order by [date]) as seqnum
      from t
     )
update toupdate
    set [year] = NULL
    where seqnum > 1;

Se você quiser isso como um select declaração:
with ts as (
      select t.*, row_number() over (partition by [year] order by [date]) as seqnum
      from t
     )
select [date],
       (case when seqnum = 1 then [year] end) as [year]
from ts;