以下のクエリは、週ごとにグループ化されたコース時間の合計を返します。問題は、週の値がクエリで定義できないたびに異なる可能性があることです。クエリで返される内容の例を次に示します。
ID Category Week of Total Hours
1111554 Case Management 7/2/2012 7
1111554 Case Management 7/9/2012 7
1111554 Case Management 7/16/2012 7
1111554 Pre-GED 7/2/2012 3
1111554 Pre-GED 7/9/2012 3
1111554 Pre-GED 7/16/2012 3
クエリ
WITH cteSource(DOP_ID, Category, WeekOf, [Hours])
AS (
SELECT DOP_ID,
Category,
DATEADD(DAY, DATEDIFF(DAY, '19000101', [Date]) / 7 * 7 , '19000101') AS WeekOf, -- Monday
[Hours]
FROM GW_PPP.dbo.SLAM_Attendence
)
SELECT DOP_ID AS ID,
Category,
WeekOf AS [Week of],
SUM([Hours]) AS [Total Hours]
FROM cteSource
GROUP BY DOP_ID,
Category,
WeekOf
ORDER BY DOP_ID,
Category,
WeekOf;
繰り返しますが、クエリで週を定義しないことでテーブルをピボットする方法がわかりません
SO の週が定義されている場合は、次のようなものを使用しません。
pivot
(
week of in ([7/2/2012], [7/9/2012],
[7/16/2012 ])
) piv
可能であれば、月ごとの合計列も追加したいと思います。ここに私が望む出力があります:
ID Category 7/2/2012 7/9/2012 7/16/2012 July 12 Total
1111554 Case Management 7 7 7 21
1111554 Pre-GED 3 3 3 12