【问题标题】:sql pivot table with strings带有字符串的sql数据透视表
【发布时间】:2015-07-02 02:53:21
【问题描述】:

我正在使用 sql 2008 并尝试转置一些数据。 Sql Fiddle

我已经尝试过,但无法弄清楚。我想要的是获取数据并让它看起来像这样。

我会放上我尝试过的东西,但什么都不会运行,我无法让它同时执行 ExamID 和 score,然后旋转其余部分。

我尝试过类似这样的简单方法

选择 * FROM dbo.Results 枢 (最大(答案) FOR ExamID IN ([19966], [19969]) ) 作为p

但是返回空值。无论如何,一些帮助会很棒。 谢谢 香农

【问题讨论】:

  • 当您的新列是银行值时,它应该是 for bank in ([15], [16], [17], [18], [19]) 而不是 FOR ExamID IN ([19966], [19969]) - 请参阅这个小提琴 - sqlfiddle.com/#!3/4095d/1

标签: sql-server pivot


【解决方案1】:

您可以使用@bluefeet 的答案,但为了匹配您的预期输出,您还需要更改示例数据:

create TABLE Results
    (
      ExamID INT
    , Score INT
    , Bank INT
    , Answer CHAR(1)
    );
INSERT  INTO results
        ( ExamID, Score, Bank, Answer )
VALUES  ( 1, 70, 15, 'a' ),
        ( 1, 70, 16, 'a' ),
        ( 1, 70, 17, 'b' ),
        ( 1, 70, 18, 'd' ),
        ( 1, 70, 19, 'c' ),
        ( 2, 81, 15, 'b' ),
        ( 2, 81, 16, 'd' ),
        ( 2, 81, 17, 'c' ),        
        ( 2, 81, 18, 'c' ),
        ( 2, 81, 19, 'c' );

透视查询:

select *
from Results
pivot
(
  max(answer)
  for bank in ([15], [16], [17], [18], [19])
) piv

SQL Fiddle Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多