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;
CLICK HERE to find out more related problems solutions.