Hey, how serious are you @ this ?

How much is going to be the difference between the start_date and finish_date values in your attr table records ? If not too much, read this :

Create a table (say XYZ) with a numeric column (say I). Assuming that the difference in the dates will not be more than 30 days, put 30 rows in this XYZ tables with values 1 to 30.

And then you are all set to fire the following query to get the required output :

select attr_id,work_id,res_id,
attr_start_date+i curr_date,attr_amount
from attr a,xyz b
where attr_start_date+i<=attr_finish_date
order by 1,2,3,4;

(Don't laugh...just , I'm sure someone can post a better solution or even you yourself can engineer one. And I remember a similar issue having gotten discussed before in this forum...)