简单的SQL Server PIVOT / Transpose查询,怎么写?

时间:2011-02-24 11:46:14

标签: sql database sql-server-2005 pivot

我有一个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 个答案:

答案 0 :(得分:3)

你有没有试过像

这样的东西
SELECT  *
FROM    (
            SELECT  ID,
                    Question,
                    Answer
            FROM    @Table1
        ) t
PIVOT (MAX(Answer) FOR Question IN ([Any Good?],[Happy?],[Good Staff?],[Return?])) p

答案 1 :(得分:1)

枢轴操作要求您使用某种形式的聚合,但是如果您只有一个值Max()将为您获取最大(仅)值

像这样的东西应该起作用

Select *
from Table
Pivot
(
    Max(answer)
    For Question In ([Any Good?],[Happy?],[Good Staff?],[Return?])
)
AS P