Вы можете сделать это, используя таблицу чисел . Здесь я использую master..spt_values.
declare @T table
(
surname varchar(20),
[Date] datetime,
Duration int
)
insert into @T values
('Bertram', '2011-09-01', 3),
('Coulois', '2011-09-01', 5),
('LeBlanc', '2011-09-01', 6),
('Fosters', '2011-09-01', 3),
('Blanche', '2011-09-01', 2),
('Bertram', '2011-09-02', 6),
('Gillian', '2011-09-02', 4),
('Pikklar', '2011-09-02', 7),
('Thierry', '2011-09-03', 6),
('Selanne', '2011-09-03', 6)
select dateadd(day, N.number, [Date]) as [Date],
count(*) as [Count]
from @T as T
inner join master..spt_values as N
on N.number between 0 and T.Duration
where N.type = 'P'
group by dateadd(day, N.number, [Date])
order by dateadd(day, N.number, [Date])
Результат:
Date Count
----------------------- -----------
2011-09-01 00:00:00.000 5
2011-09-02 00:00:00.000 8
2011-09-03 00:00:00.000 10
2011-09-04 00:00:00.000 9
2011-09-05 00:00:00.000 7
2011-09-06 00:00:00.000 7
2011-09-07 00:00:00.000 5
2011-09-08 00:00:00.000 4
2011-09-09 00:00:00.000 3