我有一个列为Name, Maths, Science, English
的表StudentMarks
。数据类似于
Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10
我想把它安排如下:
Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
使用unpivot,我可以正确地获取名称和标记,但不能将源表中的列名转换为所需结果集中的Subject
列。
我如何才能做到这一点?
到目前为止,我已经完成了以下查询(获取名称,标记)
select Name, Marks from studentmarks
Unpivot
(
Marks for details in (Maths, Science, English)
) as UnPvt
发布于 2013-09-28 00:48:40
您的查询非常接近。您应该能够使用以下内容,其中包括最终选择列表中的subject
:
select u.name, u.subject, u.marks
from student s
unpivot
(
marks
for subject in (Maths, Science, English)
) u;
发布于 2019-11-01 10:46:06
使用交叉连接的另一种方法是在交叉连接中指定列名
select name, Subject, Marks
from studentmarks
Cross Join (
values (Maths,'Maths'),(Science,'Science'),(English,'English')
) un(Marks, Subject)
where marks is not null;
https://stackoverflow.com/questions/19055902
复制相似问题