【发布时间】:2023-03-26 14:40:02
【问题描述】:
我有表 tbl_Survey:
SurveyID 1 2 3 4
7 4 4 4 4
8 3 3 3 3
9 2 2 2 2
我的目标是将表头 - 1 2 3 4 转换为行,如下所示:
enter
SurveyID Ouestion Rating
7 1 4
7 2 4
7 3 4
7 4 4
8 1 3
8 2 3
8 3 3
8 4 3
9 1 2
9 2 2
9 3 2
9 4 2
我的代码是(尝试遵循帮助建议):
SELECT [SurveyID]
,[Question]
,[Rating]
FROM
[tbl_Survey]
cross apply
(
values
('1', 1 ),
('2', 2 ),
('3', 3 ),
('4', 4 )
) c (Question, Rating);
结果不完全正确(评分栏有问题):
SurveyID Ouestion Rating
7 1 1
7 2 2
7 3 3
7 4 4
8 1 1
8 2 2
8 3 3
8 4 4
9 1 1
9 2 2
9 3 3
9 4 4
请帮忙...
我的问题(因为我无法继续)是我的代码没有使用括号。
这是更新后的代码:
SELECT [SurveyID], [Question], [Rating]
FROM [dbo].[tbl_Survey]
UNPIVOT
(
[Rating]
FOR [Question] in ([1], [2], [3], [4])
) AS SurveyUnpivot
【问题讨论】:
-
这能回答你的问题吗? Unpivot with column name
-
@Larnu 按照这些说明,我的代码卡住了……再试一次,几分钟后会发帖
标签: tsql row unpivot cross-apply