Как транспонировать набор результатов из SQL

Я использую Microsoft SQL Server 2008.
У меня есть таблица, которая выглядит примерно так:

|======================================================|
| RespondentId | QuestionId | AnswerValue | ColumnName | 
|======================================================|
|     P123     |      1     |     Y       | CanBathe   |
|------------------------------------------------------|
|     P123     |      2     |     3       | TimesADay  |
|------------------------------------------------------|
|     P123     |      3     |     1.00    | SoapPrice  |
|------------------------------------------------------|
|     P465     |      1     |     Y       | CanBathe   |
|------------------------------------------------------|
|     P465     |      2     |     1       | TimesADay  |
|------------------------------------------------------|
|     P465     |      3     |     0.99    | SoapPrice  |
|------------------------------------------------------|
|     P901     |      1     |     N       | CanBathe   |
|------------------------------------------------------|
|     P901     |      2     |     0       | TimesADay  |
|------------------------------------------------------|
|     P901     |      3     |     0.00    | SoapPrice  |
|------------------------------------------------------|

Я хотел бы перевернуть строки, чтобы они были столбцами, чтобы эта таблица выглядела так:

|=================================================|
| RespondentId | CanBathe | TimesADay | SoapPrice | 
|=================================================|
|     P123     |     Y    |      3    |   1.00    | 
|-------------------------------------------------|
|     P465     |     Y    |      1    |   0.99    | 
|-------------------------------------------------|
|     P901     |     N    |      0    |   0.00    | 
|-------------------------------------------------|

(данные примера здесь составлены произвольно, поэтому это глупо)

Исходная таблица представляет собой временную таблицу примерно с 70 000 строками.
Какой SQL мне нужно написать для этого?

Обновление

  • Я даже не знаю, является ли PIVOT правильным путем.
  • Я не знаю, какой столбец использовать для PIVOT.
  • В документации упоминается <функция агрегирования> и <агрегированный столбец> , и я не хочу ничего агрегировать.

Заранее спасибо.

8
задан funkymushroom 9 August 2011 в 20:23
поделиться