Простой SQLServer PIVOT / Транспонированный запрос, как написать? - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть SELECT, который возвращает мне данные в следующей форме ...

ID             Question             Answer
1              Any Good?            Yes
1              Happy?               No
1              Good Staff?          Yes
1              Return?              N/A
2              Any Good?            No
2              Happy?               No
2              Good Staff?          Yes
2              Return               N/A
...

Мне нужно это в следующей форме ...

ID       Any Good?   Happy?   Good Staff?   Return?
1        Yes         No       Yes           N/A
2        No          No       Yes           N/A
...

Ответ 'столбец в моем верхнем запросе вычисляется с использованием CASE .. WHEN.Я думал, может быть, пункт PIVOT может помочь мне.Это, кажется, требует агрегации, хотя.Мне не нужно объединяться, просто перенести.

Я не возражаю против необходимости явно указывать каждый Answer в решении (полагаю, мне все равно придется это делать).

Кто-нибудь знает лучший способ сделатьэто?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

Вы пробовали что-то вроде

SELECT  *
FROM    (
            SELECT  ID,
                    Question,
                    Answer
            FROM    @Table1
        ) t
PIVOT (MAX(Answer) FOR Question IN ([Any Good?],[Happy?],[Good Staff?],[Return?])) p
1 голос
/ 24 февраля 2011

Операция сводки требует, чтобы вы использовали некоторую форму агрегата, однако, если у вас будет только одно значение, Max() получит максимальное (только) значение для вас

Что-то вроде этого должно работать

Select *
from Table
Pivot
(
    Max(answer)
    For Question In ([Any Good?],[Happy?],[Good Staff?],[Return?])
)
AS P
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...