【问题标题】:Simple SQLServer PIVOT/Transposed query, how to write?简单的 SQL Server PIVOT/Transpose 查询,怎么写?
【发布时间】:2011-02-24 11:46:14
【问题描述】:

我有一个 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(我猜我还是必须这样做)。

有人知道最好的方法吗?

【问题讨论】:

    标签: sql database sql-server-2005 pivot


    【解决方案1】:

    你有没有尝试过类似的东西

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

    【讨论】:

      【解决方案2】:

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

      这样的东西应该可以工作

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

      【讨论】:

        猜你喜欢
        • 2012-05-11
        相关资源
        最近更新 更多