Преобразует динамический сводный запрос в одиночный запрос с помощью SQL 2008
Я использую MS SQL SERVER 2008 и хочу преобразовать следующий динамический сводный запрос в статический сводный запрос
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(Weeks) from MyTestTable group by Weeks order by Weeks FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT Month_year,' + @cols + ' from ( select Month_year, weeks, Xcount from MyTestTable ) x pivot ( sum(xCount) for Weeks in (' + @cols + ') ) p ' execute(@query);
Пожалуйста, помогите мне.
Что я уже пробовал:
Я попытался сделать следующий запрос, но возникает ошибка в "в течение нескольких недель в ()" сводная ведомость (последняя строки запроса).
SELECT Month_year,STUFF((SELECT ',' + QUOTENAME(Weeks) from MyTestTable group by Weeks order by Weeks FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') from ( select Month_year, weeks, Xcount from MyTestTable ) x pivot ( sum(xCount) for Weeks in (STUFF((SELECT ',' + QUOTENAME(Weeks) from MyTestTable group by Weeks order by Weeks FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')) ) p
jaket-cp
распечатайте его и вы увидите окончательный статический запрос
print @query;
Pankaj sonar
После того, как напечатать запрос, на выходе изменяется. Я хочу показать, что столбцы (используя функцию stuff) динамически не статичны.
jaket-cp
Ах да - вы хотите, чтобы запрос получал динамические столбцы для размещения в сводном запросе.
Насколько я понимаю, это невозможно.
если вы выполните поиск в google http://lmgtfy.com/?q=tsql+динамические+сводные+столбцы
вы увидите, что это, как это делается
Я использую подобную технику для выполнения динамических поворотов.
Pankaj sonar
Спасибо за предложение. Я уже сделал то, что вы предложили. Я хочу создать статический запрос из динамического запроса и использовал этот запрос для привязки данных к gridview.