如何将具有相似ID的同一列中的不同值捕获到具有特定列指示符的一行中

时间:2017-07-25 21:27:16

标签: sql sql-server sql-view

我需要将某些问题代码的是或否答案捕获到作为每个特定问题代码的指标的列中。问题代码是设定值,并且为了这个例子,只能是A' A' B'或' C'。

非常感谢任何帮助,我期待着SQL大师能想到的任何答案!

示例输入表:

    ID  Question Code   YesOrNo
    1         A             Yes
    1         B             No
    1         C             No
    2         A             No
    2         B             Yes
    2         C             Yes
    3         A             No
    3         B             No
    3         C             Yes

所需表/视图:

    ID  A_Answer    B_Answer    C_Answer
    1   Yes         No          No
    2   No          Yes         Yes
    3   No          No          Yes

澄清这是在SQL Server中。

1 个答案:

答案 0 :(得分:1)

您可以执行条件聚合:

SELECT
    Id,
    A_Answer = MAX(CASE WHEN [Question Code] = 'A' THEN YesOrNo END),
    B_Answer = MAX(CASE WHEN [Question Code] = 'B' THEN YesOrNo END),
    C_Answer = MAX(CASE WHEN [Question Code] = 'C' THEN YesOrNo END)
FROM Tbl
GROUP BY Id;

ONLINE DEMO