Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL - Ersetzen Sie wiederholte Zeilen durch Nullwerte, während Sie die Anzahl der Zeilen beibehalten

Sie können dies tun, indem Sie die Zeilen innerhalb eines Jahres aufzählen. Aktualisieren Sie dann alle bis auf die erste:

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;

Wenn Sie dies als select möchten Aussage:

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;