Вам нужно будет использовать динамический запрос, поскольку столбцы, возвращаемые сводной точкой, меняются каждый месяц.
Со временем это, возможно, можно будет сделать более элегантным, но вот основная идея:
declare @StartOfMonth datetime = '11/1/2010';
declare @counter datetime = @StartOfMonth;
declare @sql varchar(MAX) = '';
declare @columnnames varchar(MAX);
declare @columnfilter varchar(MAX);
declare @fieldname varchar(12);
--First, create a string of dynamic columns, one for each day of the month.
WHILE (MONTH(@counter) = MONTH(@StartOfMonth))
BEGIN
SET @fieldname = '[' + CONVERT(varchar(10), @counter, 101) + ']';
--Wrap the columns in ISNULL(@,0) to avoid having null values for days without tasks.
SET @columnnames = ISNULL(@columnnames + ',', '') + 'ISNULL(' + @fieldname + ',0) AS ' + @fieldname;
--Also create a dynamic list of the Task_Date values to include in the pivot.
SET @columnfilter = ISNULL(@columnfilter + ',', '') + @fieldname;
SET @counter = DATEADD(DAY,1,@counter);
END
--Put it all together into a pivot query.
set @sql = 'SELECT Task_Name, ' + @columnnames + ' FROM (';
set @sql = @sql + 'SELECT M.Task_Name, D.Task_Date, D.Task_Count '
set @sql = @sql + 'FROM Task_Detail D JOIN Task_Master M ON D.Task_ID = M.Task_ID) as SourceTable ';
set @sql = @sql + 'PIVOT (SUM(Task_Count) FOR Task_Date IN (' + @columnfilter + ')) AS PivotTable';
exec (@sql)