У меня очень простой запрос, но я не могу заставить его работать. Пожалуйста, помогите. спасибоDynamic Pivot Sql Server
я следовал TUT, но мой запрос не работает
DECLARE @ColumnName NVARCHAR(MAX) = ''
DECLARE @Query NVARCHAR(MAX) = ''
DECLARE @Site NVARCHAR(MAX) = ''
DECLARE @Date NVARCHAR(MAX) = ''
DECLARE @MOnth NVARCHAR(MAX) = ''
SELECT @ColumnName += QUOTENAME([Product Category]) + ','
FROM
(
SELECT DISTINCT [Product Category]
FROM vw_TTMTALK_BREAKDOWN_DETAIL_LINE
WHERE [Customer No] = 'SLPIP' AND
DATEPART(yyyy, [Posting Date])= '2016' AND
CONVERT(CHAR(3), [Posting Date], 0)= 'Jan'
GROUP BY [Customer No], [Product Category]
) AS T1
SET @ColumnName = LEFT(@ColumnName,LEN(@ColumnName)-1)
set @Site = 'SLPIP'
set @Date = '2016'
set @Month = 'Jan'
SET @Query = 'SELECT * FROM
(
SELECT [Customer No], [Product Category]
FROM vw_TTMTALK_BREAKDOWN_DETAIL_LINE
WHERE [Customer No] = ' + @Site + ' AND
DATEPART(yyyy, [Posting Date])=' + @Date + ' AND
CONVERT(CHAR(3), [Posting Date], 0)=' + @Month + '
--GROUP BY [Customer No], [Product Category]
) T2
PIVOT (
COUNT([Customer No])
FOR [Product Category] IN (' + @ColumnName + ')
) T3'
--print @Query
EXEC sp_executesql @Query
Ошибка
Msg 207, Level 16, State 1, Line 5
Invalid column name 'SLPIP'.
Msg 207, Level 16, State 1, Line 7
Invalid column name 'Jan'.
Отсутствие тиков вокруг @site в динамическом запросе. и около месяца. предполагая строковый тип данных для обоих. add char (39) до и после сайта. Пример: 'WHERE [Customer No] = '+ char (39) + @ Site + char (39)' AND' – xQbert
Спасибо, сэр xQbert, что ваше решение работает –