tsql - T-SQL 中的列到行
问题描述
我有表 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
解决方案
这个怎么样:
DECLARE @T TABLE (SurveyID int, q1 int, q2 int, q3 int, q4 int)
INSERT @T (SurveyID, q1, q2, q3, q4)
VALUES (7,4,4,4,4), (8,3,3,3,3), (9, 2, 2, 2, 2)
SELECT SurveyID, REPLACE(Question,'q','') as Question, Rating
FROM @T UNPIVOT (Rating FOR Question in (q1, q2, q3, q4)) as UPV
推荐阅读
- reactjs - 反应如何返回一个变量,以便它呈现而不给出未定义的错误
- javascript - javascript DOM不同步?
- java - 以编程方式为给定类型的每个 bean/configuration/... 创建 spring bean
- asp.net-mvc - html.TextAreaFor 和 HtmlDecode
- flutter - 在 Flutter 的 for 循环中生成的 2 个文本小部件之间画线
- c - C中的函数jalr
- botframework - 非 ngrok 的 MS Teams 机器人端点地址
- python - Selenium Python - 无法选择选项选择框
- pandas - Excel 单元格包含标题及其值,以 : 分隔。想在熊猫中创建数据框创建标题并从单元格中填充其值
- regex - Unexpected Behavior of Regex in Perl with Lookahead/Lookbehind