我有一个具有以下结构的 SQL 表:
ID_Employee | 1_1 个问题 | 1_2 个问题 | 2_1 个问题 | 2_2 问题 | 3_1 个问题 | 3_2 问题 |
---|---|---|---|---|---|---|
第一次 | answer1_1 | answer1_2 | answer2_1 | answer2_2 | answer3_1 | answer3_2 |
第二个 | answer1_1 | answer1_2 | answer2_1 | answer2_2 | answer3_1 | answer3_2 |
提及答案是可变的,即它们没有静态数据 但我需要按照以下结构对此表进行排序:
ID_Employee | 问题1 | 问题2 | 问题3 |
---|---|---|---|
第一次 | answer1_1 | answer2_1 | answer3_1 |
第一次 | answer1_2 | answer2_2 | answer3_2 |
第二个 | answer1_1 | answer2_1 | answer3_1 |
第二个 | answer1_2 | answer2_2 | answer3_2 |
如果有人可以指导我如何执行此过程,我将不胜感激。非常感谢。
答案 0 :(得分:0)
您需要unpivot
您的数据:
SELECT ID_Employee , questions
FROM
(SELECT * FROM yourtable) pv
UNPIVOT
(questions FOR EmployeeIds IN ( Question1,Question2,Question3,Question4) ) unpvt;
答案 1 :(得分:0)
如果您有更多的列要一起取消旋转(例如 Question1,Question2
等),使用 CROSS APPLY
来取消旋转比使用 UNPIVOT
更容易:
SELECT
t.ID_Employee,
v.Question1,
v.Question2,
v.Question3
FROM yourtable t
CROSS APPLY (VALUES
([1_1 Question], [2_1 Question], [3_1 Question]),
([1_2 Question], [2_2 Question], [3_2 Question])
) v(Question1, Question2, Question3)