sql >> Databasteknik >  >> RDS >> Sqlserver

SQL - Ersätt upprepade rader med null-värden samtidigt som antalet rader bevaras

Du kan göra detta genom att räkna upp raderna inom ett år. Uppdatera sedan alla utom den första:

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;

Om du vill ha detta som en select uttalande:

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. Hur man lagrar hash i MySQL-databaser utan att använda textfält

  2. 2 sätt att returnera bara de numeriska värdena från en SQLite-databaskolumn

  3. Ställer in application_name på Postgres/SQLAlchemy

  4. Finns det något sätt att göra en annan fråga i infogningsfrågan?