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!
Paul White
SQLPerformance.com
SQLkiwi blog
@SQL_Kiwi