Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL - Remplacer les lignes répétées par des valeurs nulles tout en préservant le nombre de lignes

Vous pouvez le faire en énumérant les lignes au cours d'une année. Puis mettez à jour tous sauf le premier :

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;

Si vous voulez ceci comme select déclaration :

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;