select *, cast(date_add(start_date, interval liczba day) as date) from
(
select 'Marcin' imie, 'Kowalski' nazwisko, '2014-01-01' start_date, '2014-02-02' end_date
union
select 'Kazimierz' imie, 'Wielki' nazwisko, '2014-02-01' start_date, '2014-03-02' end_date
) dane
join
(
select j+10*d+100*s liczba from
(
select 0 j union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9
) jednosci,
(
select 0 d union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9
) dziesiatki,
(
select 0 s union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9
) setki
) dni
on dni.liczba between 0 and datediff(end_date, start_date)
order by nazwisko, liczba
bez komentarza, bo czasu nie mam.
Funkcje sa z MySQL, bno mi sie nie chcialo przypominac na MS SQL