sql >> Database teknologi >  >> RDS >> Sqlserver

SQL - Erstat gentagne rækker med null-værdier, mens antallet af rækker bevares

Det kan du gøre ved at optælle rækkerne inden for et år. Opdater derefter alle undtagen den første:

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;

Hvis du ønsker dette som en select erklæring:

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;



  1. Sådan finder du toptabere i 1 dag, 1 måned baseret på historiske data

  2. SQL:Try/Catch fanger ikke en fejl, når den forsøger at få adgang til en tabel, som den ikke kan finde

  3. 7 ting at vide om rum på Oracle Cloud Infrastructure

  4. Analyse af I/O-ydeevne for SQL Server