Pankaj sonar Ответов: 0

Преобразует динамический сводный запрос в одиночный запрос с помощью 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.

0 Ответов