我在构建以下方案的查询时遇到问题。我列出了一个示例表格和值:
Q_ID | Response_ID | answer_col_label | answer_value
10 | 500 | Label_a | 1
11 | 501 | Label_b | 2
12 | 502 | Label_c | 3
然后在结果表中,值如下:
Q_ID | Response_ID | answers
10 | 500 | 502
在结果表中,在答案栏中按下了response_id,这意味着用户从单选按钮/复选框中选择了此response_id。
现在我想创建一个查询,我希望在列标题中显示answer_col_label值(Lable_a),以包括响应表的所有响应,并在该列标题下显示answer_value作为选定结果。
请帮我在SQL Server中创建此查询。感谢您的时间和帮助。
答案 0 :(得分:0)
使用PIVOT
SELECT P.*
FROM
(
SELECT A.Q_ID, A.Response_ID, A.answer_col_label, B.answers
FROM @ResponseTable AS A
INNER JOIN @ResultsTable AS B
ON A.Q_ID = B.Q_ID
AND A.Response_ID = B.Response_ID
) AS S
PIVOT
(
MAX(answers) FOR answer_col_label IN ([Label_a], [Label_b], <and other labels>)
) AS P