• Try this

    WITH Range(MINDATE,TotalDays) AS (

    SELECT MIN(DATECOL),

    DATEDIFF(Day,MIN(DATECOL),MAX(DATECOL))

    FROM #SAMPLETABLE),

    CTE AS (

    SELECT n.number+1 AS number,

    ROW_NUMBER() OVER(PARTITION BY CASE WHEN s.DATECOL IS NULL THEN 1 END ORDER BY n.number) AS rn,

    DATEADD(Day,n.number,r.MINDATE) AS DATECOL,

    s.WEIGHTS

    FROM master.dbo.spt_values n

    INNER JOIN Range r ON n.number BETWEEN 0 AND r.TotalDays

    LEFT OUTER JOIN #SAMPLETABLE s ON s.DATECOL = DATEADD(Day,n.number,r.MINDATE)

    WHERE n.type='p')

    SELECT a.DATECOL,

    COALESCE(b.WEIGHTS,a.WEIGHTS) AS WEIGHTS

    FROM CTE a

    LEFT OUTER JOIN CTE b ON a.WEIGHTS IS NULL

    AND b.WEIGHTS IS NOT NULL

    AND b.rn = a.number - a.rn

    ORDER BY a.number;

    ____________________________________________________

    Deja View - The strange feeling that somewhere, sometime you've optimised this query before

    How to get the best help on a forum

    http://www.sqlservercentral.com/articles/Best+Practices/61537