Generación de pronóstico de DB2 SQL basada en la fecha de finalización de los parámetros
Tengo una mesa con actividades. Las columnas son: ActivityId, nextDate, frecuencia. La frecuencia es en meses. Necesito una consulta que genere todas las fechas en las que se realizará la actividad según la frecuencia (en meses). Estoy usando DB2.
Tabla de actividades:
ID de actividad | proxima fecha | frecuencia |
---|---|---|
1 | 01/03/2024 | 2 |
Parámetro de donación: 31/12/2024
Salida necesaria:
ID de actividad | fecha |
---|---|
1 | 01/03/2024 |
1 | 01/05/2024 |
1 | 01/07/2024 |
1 | 01/09/2024 |
1 | 01/11/2024 |
Aceptado
Puedes hacerlo con un CTE recursivo
with activities (activityId, nextDate, frequency) as (
values (1, date '2024-03-01', 2)
),
activities_this_year (activityId, firstDate, number, nextDate, frequency) as (
select activityId, nextDate as firstDate, 1, nextDate, frequency from activities
union all
select
activityId,
firstDate,
number + 1,
nextDate + frequency month,
frequency
from activities_this_year
where nextDate + frequency month < this_year(current date) + 1 year
)
select activityId, nextDate from activities_this_year order by activityId, nextDate
ID DE ACTIVIDAD | PROXIMA FECHA |
---|---|
1 | 2024-03-01 |
1 | 2024-05-01 |
1 | 2024-07-01 |
1 | 2024-09-01 |
1 | 2024-11-01 |
violín