Я использую Microsoft SQL Server 2008.
У меня есть таблица, которая выглядит примерно так:Как транспонировать из SQL ResultSet
|======================================================|
| 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 мне нужно написать, чтобы сделать это?
Update
- Я даже не знаю, если PIVOT правильный путь.
- Я не знаю, в какой колонке PIVOT.
- В документации упоминаются
<aggregation function>
и<column being aggregated>
, и я не хочу ничего агрегировать.
Заранее спасибо.
Вы изучали 'PIVOT'? http://msdn.microsoft.com/en-us/library/ms177410.aspx –
Из того, что я видел в команде 'PIVOT', вы должны использовать функцию агрегата. Мне не нужна сводная функция, я просто хочу, чтобы значения были перевернуты. – funkymushroom