• thanks jeff for your valuable advice .

    I should change the order by n.date final select as below :

    SELECT CONVERT(varchar(20), N.date , 101) AS DATECOL, T.WEIGHTS

    FROM AllDatesCTE AS N

    CROSS APPLY

    (SELECT TOP(1) DATECOL, WEIGHTS

    FROM #SAMPLETABLE AS T

    WHERE T.DATECOL <= N.date

    ORDER BY DATECOL DESC) AS T

    ORDER BY N.date ASC