У меня есть такая таблица,
туЬаЫе
date | value
2018.09.12 | 1
2018.09.11 | 2
2018.09.10 | 3
Мне нужен запрос для возврата суммы (значения) за последние шесть недель. Именно так.
week# | value
37 | 6
36 | 0
35 | 0
34 | 8
33 | 9
32 | 10
31 | 11
У меня есть запрос на возврат суммы за каждую неделю.
SELECT Sum(Value) AS Sumvalue, DATEPART(wk, date) AS [weekNo]
FROM mytable
WHERE Date BETWEEN DATEADD(DAY, -42, GETDATE()) AND GETDATE()
GROUP BY DATEPART(wk, date)
Но это не может обработать нулевые значения в течение недели.
Как можно написать сводный запрос для получения формата?
Моя попытка;
SELECT *
FROM (
SELECT Value, DATEPART(wk, date) AS [weekNo]
FROM mytable
WHERE Date BETWEEN DATEADD(DAY, -42, GETDATE()) AND GETDATE()
) As sourcetable
PIVOT
(
Sum(Value) for DATEPART(wk, date) IN (SELECT date FROM mytable where date between
DATEADD(DAY, -42, GETDATE()) and GETDATE())
) AS pivotable
Я получаю синтаксическую ошибку рядом с ключевым словом. Как я могу поставить шесть недель в сводном состоянии