关于列名问题

关于列名问题

我有张桌子StudentMarksName, Maths, Science, English..数据就像

Name,  Maths, Science, English  
Tilak, 90,    40,      60  Raj,   30,    20,      10

我想把它安排如下:

Name,  Subject,  Marks
Tilak, Maths,    90Tilak, Science,  40Tilak, English,  60

带着不枢轴我能够正确地获取名称,标记,但不能将源表中的列名获取到Subject列在所需的结果集中。

我怎样才能做到这一点?

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

select Name, Marks from studentmarksUnpivot(
  Marks for details in (Maths, Science, English)) as UnPvt


子衿沉夜
浏览 567回答 2
2回答

芜湖不芜

您的查询非常接近。您应该能够使用以下内容,其中包括subject在最后选择列表中:select u.name, u.subject, u.marksfrom student sunpivot(   marks  for subject in (Maths, Science, English)) u;看见SQLFiddle与演示

莫回无

您还可以通过使用具有以下代码的逻辑序列来尝试标准的SQL不旋转方法。以下代码有3个步骤:使用交叉联接为每行创建多个副本(本例中还创建了Subject列)创建列“标记”并使用案例表达式填写相关值(例如:如果主题是科学,那么从科学列中选择值)删除任何空组合(如果存在,如果基表中没有空值,则可以完全避免表达式) select *  from   (     select name, subject,     case subject    when 'Maths' then maths    when 'Science' then science    when 'English' then english    end as Marksfrom studentmarksCross Join (values('Maths'),('Science'),('English')) AS Subjct(Subject))as Dwhere marks is not null;
打开App,查看更多内容
随时随地看视频慕课网APP