Скажем, у меня есть некоторые данные, либо в таблице SQL Server 2008 или [таблица] -typed переменная:Использование PIVOT в SQL Server 2008
author_id review_id question_id answer_id
88540 99001 1 719
88540 99001 2 720
88540 99001 3 721
88540 99001 4 722
88540 99001 5 723
36414 24336 1 302
36414 24336 2 303
36414 24336 3 304
36414 24336 4 305
36414 24336 5 306
Я хочу, чтобы получить данные в виде набора результатов, которые выглядит следующим образом:
author_id review_id 1 2 3 4 5
88540 99001 719 720 721 722 723
36414 24336 302 303 304 305 306
Я подозреваю, что оператор PIVOT, что мне нужно (по this post, во всяком случае), но я не могу понять, как приступить к работе, особенно когда число question_id строк таблица может отличаться. В приведенном выше примере это 5, но в другом запросе таблица может быть заполнена 7 различными вопросами.
Это, кажется, то, что мне нужно. Я дам ему выстрел и отчитаю - спасибо! –
Обратите внимание на подзапрос. Если вы просто используете «SELECT * FROM YourTable», то любые другие задействованные столбцы повлияют на неявную группировку, предоставляемую функцией PIVOT. И если у вас есть какие-либо ошибки, закомментируйте строку 'exec', заменив ее на' select @ qry' –
. Я больше не использую [SELECT *] - я всегда четко указываю столбцы, к которым я обращаюсь, - так что это не будет вопрос. И да, я некоторое время использовал [select @qry], чтобы я мог видеть/отлаживать генерацию инструкции SQL до ее запуска. Ваш код работал как обещал - большое вам спасибо за вашу помощь! –