• USE tempdb;

    DECLARE @data

    TABLE (

    input_month DATETIME NOT NULL,

    price MONEY

    );

    INSERT @data

    VALUES ('20090101', $50.00),

    ('20090201', $58.00),

    ('20090301', $65.00);

    SELECT Days.output_date,

    D.price

    FROM @data D

    CROSS

    JOIN (

    VALUES (00), (01), (02), (03), (04), (05), (06), (07), (08), (09),

    (10), (11), (12), (13), (14), (15), (16), (17), (18), (19),

    (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30)

    ) DayOffset (n)

    CROSS

    APPLY (SELECT DATEADD(DAY, DayOffset.n, D.input_month)) Days (output_date)

    WHERE MONTH(Days.output_date) = MONTH(D.input_month);

    edit: Fixed!