小编典典

取消透视列名称

sql

我有一张StudentMarks有栏的桌子Name, Maths, Science, English。数据就像

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,我能够正确获取Name,Marks,但无法将源表中的列名获取到Subject所需结果集中的列。

我怎样才能做到这一点?

到目前为止,我已经达到以下查询(获取名称,商标)

select Name, Marks from studentmarks
Unpivot
(
  Marks for details in (Maths, Science, English)

) as UnPvt

阅读 152

收藏
2021-05-05

共1个答案

小编典典

您的查询非常接近。您应该能够使用以下内容,其中包括subject最终选择列表中的内容:

select u.name, u.subject, u.marks
from student s
unpivot
(
  marks
  for subject in (Maths, Science, English)
) u;

参见带有演示的SQL Fiddle

2021-05-05