2017-07-25 73 views
0

我需要将特定问题代码的是或否答复捕获到作为每个特定问题代码的指标的列中。问题代码是设定值,因此本例只能是'A','B'或'C'。如何将具有相似ID的同一列中的不同值捕获到具有特定列指示符的一行中

任何帮助将不胜感激,我期待着你的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

可以执行有条件聚集:

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

+0

这个答案真是棒极了!我们会看看它是否支持其他领域,我必须做类似的事情。谢谢! – NickBow

相关问题