Creating test data:
create table yourtable (Id int, Date1 datetime, Date2 datetime, Amount int, CountDays decimal);
insert into yourtable values (1, '2014-01-01','2014-01-04', 1000, 4);
insert into yourtable values (2, '2014-01-13','2014-01-19', 1200, 6);
And the sql query (common table expression with recursion):
WITH cte (id, date1, date2, amount) AS (
SELECT id, date1, date2, (Amount / CountDays) as amount
FROM yourtable
UNION ALL
select id, DATEADD(day, 1, date1) date1, date2, amount
from cte
where date1 < date2
)
Finally to receive the data:
select * from cte
order by id
Output:
ID DATE1 DATE2 AMOUNT
1 January, 01 2014 00:00:00+0000 January, 04 2014 00:00:00+0000 250
1 January, 02 2014 00:00:00+0000 January, 04 2014 00:00:00+0000 250
1 January, 03 2014 00:00:00+0000 January, 04 2014 00:00:00+0000 250
1 January, 04 2014 00:00:00+0000 January, 04 2014 00:00:00+0000 250
2 January, 13 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 14 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 15 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 16 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 17 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 18 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
2 January, 19 2014 00:00:00+0000 January, 19 2014 00:00:00+0000 200
Fiddle Demo