Detta är svaret på din fråga:
SELECT
program_id,
reporting_day,
CAST((CAST(total AS FLOAT)/CAST(total_seconds AS FLOAT)*100*weight) AS DECIMAL(5,2))
AS viewing_percentage
FROM table_b
OUTER APPLY (
SELECT
SUM(seconds_viewed) AS total
FROM table_a
WHERE table_a.program_id = table_b.program_id
AND table_a.viewing_day <= table_b.reporting_day
) AS t
Miljön jag har använt är Microsoft SQL Server 2014