Nested Hierarchy to Calculated Date

It looks like a pretty simple recursive CTE is needed. You just need to add the child row’s day number to the parent row’s date.

WITH cte AS (
    SELECT
      t.hol_ccy,
      t.holiday,
      t.hol_dt,
      t.calloc_id
    FROM YourTable t
    WHERE t.base_hol_id IS NULL
    
    UNION ALL
    
    SELECT
      t.hol_ccy,
      t.holiday,
      DATEADD(day, t.hol_day_no, cte.hol_dt),
      t.calloc_id
    FROM YourTable t
    JOIN cte ON cte.calloc_id = t.base_hol_id
)
SELECT
  t.hol_ccy,
  t.holiday,
  t.hol_dt
FROM cte t;

db<>fiddle

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top