Я хочу отобразить данные за 24 месяца (по названию месяца), но, как показано в запросе, мне нужно поставить 24 столбца для каждого месяца, что сделает мой запрос длинным.
DECLARE @sql NVARCHAR(MAX) = 'SELECT [STORE] = ET_LIBELLE,
CONVERT(DECIMAL(15,0),SUM(CASE WHEN YEAR(GP_DATEPIECE) = YEAR(DATEADD(MONTH,-1,GETDATE()))
AND month(GP_DATEPIECE) = MONTH( DATEADD(MONTH,-1,GETDATE()))
THEN ISNULL([SALES], 0) ELSE 0 END)) AS ' + DATENAME(MONTH, DATEADD(MM,-1, GETDATE())) + ',
CONVERT(DECIMAL(15,0),SUM(CASE WHEN YEAR(GP_DATEPIECE) = YEAR(DATEADD(MONTH,-2,GETDATE()))
AND month(GP_DATEPIECE) = MONTH( DATEADD(MONTH,-2,GETDATE()))
THEN ISNULL([SALES], 0) ELSE 0 END)) AS ' + DATENAME(MONTH, DATEADD(MM,-2, GETDATE())) + ',
.
.
.
FROM PIECE
GROUP BY ET_LIBELLE'
EXEC sp_executesql @sql
РЕЗУЛЬТАТЫ:
STORE - April - March - February - ..
--------------------------------------------------------
S1 - 5500 - 6530 - 4550 - ..
S2 - 2400 - 8740 - 9650 - ..
..
--------------------------------------------------------
Есть ли какое-нибудь решение для оптимизации и ускорения запроса, пожалуйста?