列名でピボットを解除する 質問する

列名でピボットを解除する 質問する

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

アンピボット名前とマークは適切に取得できますが、ソース テーブルの列名をSubject目的の結果セットの列に取得できません。

どうすればこれを実現できるでしょうか?

これまでに次のクエリに到達しました(名前、マークを取得するため)

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

) as UnPvt

ベストアンサー1

subjectクエリは非常に近いです。最終選択リストに を含む次のクエリを使用できるはずです。

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

見るデモ付きSQLフィドル

おすすめ記事