如何将具有相似 ID 的同一列中的不同值捕获到具有特定列指示符的一行中
How to capture different values in the same column with a similar ID into one row with specific column indicators
我需要将对某些问题代码的是或否答案捕获到列中,作为每个特定问题代码的指示符。问题代码是设置值,为了这个例子只能是 'A'、'B' 或 'C'。
任何帮助将不胜感激,我期待着 SQL 大师们能想到的任何答案!
示例输入 Table:
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
想要Table/View:
ID A_Answer B_Answer C_Answer
1 Yes No No
2 No Yes Yes
3 No No Yes
在 SQL 服务器中澄清这一点。
您可以执行条件聚合:
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;
我需要将对某些问题代码的是或否答案捕获到列中,作为每个特定问题代码的指示符。问题代码是设置值,为了这个例子只能是 'A'、'B' 或 'C'。
任何帮助将不胜感激,我期待着 SQL 大师们能想到的任何答案!
示例输入 Table:
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
想要Table/View:
ID A_Answer B_Answer C_Answer
1 Yes No No
2 No Yes Yes
3 No No Yes
在 SQL 服务器中澄清这一点。
您可以执行条件聚合:
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;