很明顯,在黑暗中拍攝,但這裏是我如何理解你的問題。
首先,你需要一個日曆表以獲取範圍日期:
http://www.dbdelta.com/calendar-table-and-datetime-functions/
之後,建造所需的PIVOT查詢和動態執行:
declare @range_start date, @range_end date;
select @range_start = '20140404', @range_end = '20140406';
declare @collist nvarchar(max);
SET @collist = stuff((select distinct ',' + QUOTENAME(convert(varchar,date,112))
FROM calendar
WHERE Datue BETWEEN @range_start AND @range_end
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'');
declare @q nvarchar(max);
set @q = '
SELECT *
FROM (
SELECT [TM_UserID],
[FullName],
[Worked_dte],
[Worked_Hours]
FROM @Reporting_User_Timesheet
WHERE [worked_dte] BETWEEN ''' + CONVERT(varchar, @range_start, 112) + '''
AND ''' + CONVERT(varchar, @range_end, 112) + '''
) AS sourceTable
Pivot (
sum([Worked_Hours]) FOR [Worked_dte] IN (' + @collist + ')
) AS PivotTable
';
exec (@q);