SELECT [PERIOD_ID]=
CASE [LEVEL]
WHEN 0 THEN CAST([YEAR] AS NVARCHAR)+ CAST([WEEK] AS NVARCHAR)
+ CAST([WEEKDAY] AS NVARCHAR)
WHEN 1 THEN CAST([YEAR] AS NVARCHAR)+ CAST([WEEK] AS NVARCHAR) + 'T'
WHEN 2 THEN CAST([YEAR] AS NVARCHAR)+ 'T'
END
,[LEVEL]
,[PERIOD] =
CASE [LEVEL]
WHEN 0 THEN ' ' + [WEEKDAYNAME] + ' ' + [MONTHDAY]
WHEN 1 THEN 'TOTAL WEEK ' + CAST([WEEK] AS NVARCHAR)
WHEN 2 THEN 'TOTAL YEAR ' + CAST([YEAR] AS NVARCHAR)
END
,[HOME] = SUM(CASE WHEN Page = 'Home' THEN TOTAL ELSE 0 END)
,[CONTACT] = SUM(CASE WHEN Page = 'Contact' THEN TOTAL ELSE 0 END)
,[PRODUCTS] = SUM(CASE WHEN Page = 'Products' THEN TOTAL ELSE 0 END)
FROM (
SELECT Page
,[YEAR] = DATEPART(YEAR,VisitDate)
,[WEEK] = DATEPART(WEEK,VisitDate)
,[WEEKDAY] = DATEPART(WEEKDAY,VisitDate)
,[WEEKDAYNAME] = LEFT(UPPER(DATENAME(WEEKDAY,VisitDate)),3)
,[MONTHDAY] = CAST(DATEPART(DAY,VisitDate) AS NVARCHAR) + '/'
+ CAST(DATEPART(MONTH,VisitDate) AS NVARCHAR)
,[TOTAL] = SUM(NbVisitors)
,[LEVEL] = GROUPING(DATEPART(WEEKDAY,VisitDate))
+ GROUPING(DATEPART(YEAR,VisitDate))
+ GROUPING(DATEPART(WEEK,VisitDate))
+ GROUPING(CAST(DATEPART(DAY,VisitDate) AS NVARCHAR)
+ '/' + CAST(DATEPART(MONTH,VisitDate) AS NVARCHAR))
FROM @T
GROUP BY Page
,DATEPART(YEAR,VisitDate)
,DATEPART(WEEK,VisitDate)
,DATEPART(WEEKDAY,VisitDate)
,DATENAME(WEEKDAY,VisitDate)
,CAST(DATEPART(DAY,VisitDate) AS NVARCHAR) + '/'
+ CAST(DATEPART(MONTH,VisitDate) AS NVARCHAR)
WITH ROLLUP
) T
WHERE 1=1
AND [LEVEL] < 3
GROUP BY
CASE [LEVEL] --> by Period Id
WHEN 0 THEN CAST([YEAR] AS NVARCHAR)+ CAST([WEEK] AS NVARCHAR)
+ CAST([WEEKDAY] AS NVARCHAR)
WHEN 1 THEN CAST([YEAR] AS NVARCHAR)+ CAST([WEEK] AS NVARCHAR) + 'T'
WHEN 2 THEN CAST([YEAR] AS NVARCHAR)+ 'T'
END,
CASE [LEVEL] --> by period
WHEN 0 THEN ' ' + [WEEKDAYNAME] + ' ' + [MONTHDAY]
WHEN 1 THEN 'TOTAL WEEK ' + CAST([WEEK] AS NVARCHAR)
WHEN 2 THEN 'TOTAL YEAR ' + CAST([YEAR] AS NVARCHAR)
END
,[LEVEL]
ORDER BY [PERIOD_ID]