Направих няколко предположения относно данните, които публикувахте.
Първо, всички стойности, които сте публикували, посочват годината като 2011
но крайните крайни дати като заглавки на колони не съответстват на 2011
, те са Sunday
стойности за 2012
така че промених данните. Също така последният запис от Early ASN 8/15/2011 12:00
, смятам, че трябва да е Late ASN
запис, в противен случай общите суми съвпадат.
За да получите желаните резултати, трябва да приложите PIVOT
функция. Тази функция ви позволява да обобщавате стойностите и след това да ги конвертирате в колони.
SET DATEFIRST 1 -- set this so the start of the week is Sunday
select InstanceType,
sum([39]) as Sep_23,
sum([38]) as Sep_16,
sum([37]) as Sep_09,
sum([36]) as Sep_02,
sum([35]) as Aug_26,
sum([34]) as Aug_19
from
(
select SPGI01_INSTANCE_TYPE_C as InstanceType,
[39], [38], [37], [36], [35], [34]
from
(
select SPGI01_INSTANCE_TYPE_C,
DatePart(wk, SPGI01_CREATE_S) WeekNo,
DATEADD(DAY, 7 -DATEPART(WEEKDAY,SPGI01_CREATE_S),SPGI01_CREATE_S) WeekEnd
from table1
) x
pivot
(
count(WeekEnd)
for weekno in ([39], [38], [37], [36], [35], [34])
) p
) x1
group by InstanceType with rollup
Вижте SQL Fiddle с демонстрация