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

Loop gennem hver værdi til det efterfølgende nummer

Mener du det her?

with myData as
(
select ID,
row_Number() over (partition by Id order by id, StartDate) as SeqNum,
min(startdate) over (partition by Id) as minDate,
startDate, endDate
from myTable
)
select id, seqNum, startDate, endDate, dateadd(day, seqNum*29, minDate) as newDate
from myData;

Eller denne:

with myData as
(
select ID,
row_Number() over (partition by Id order by id, StartDate) as SeqNum,
min(startdate) over (partition by Id) as minDate, 
max(endDate) over (partition by Id)as maxDate,
startDate, endDate
from myTable
)
select id, seqNum, startDate, endDate, 
 case 
 when maxDate < dateadd(day, seqNum*29, minDate)
 then maxDate 
 else dateadd(day, seqNum*29, minDate) end as newDate
from myData;



  1. Hvorfor i SQL kan NULL ikke matche med NULL?

  2. Python og MySQL-forespørgsel med anførselstegn

  3. SQL - Hvordan finder man det højeste tal i en kolonne?

  4. @OneToMany fejl i MySQL:Kan ikke slette eller opdatere en overordnet række:en fremmed nøgle begrænsning mislykkes