Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преминете през всяка стойност до поредния номер

Имате предвид това?

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;

Или това:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да определя в SQL Server дали диапазон дата и време се припокрива с друг

  2. Как да избегнем провал на SSIS FTP задачата, когато няма файлове за изтегляне?

  3. SELECT max(x) връща null; как мога да го накарам да върне 0?

  4. SET OPTIONS....къде се съхраняват

  5. Критерии за SQL филтър в критерии за присъединяване или клауза where, която е по-ефективна