1. ホーム
  2. sql

[解決済み] 列名を指定してのアンピボット

2022-03-04 20:51:27

質問

私はテーブルを持っています 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

アンピボット Name、Marksはきちんと取得できていますが、ソーステーブルのカラム名を Subject カラムを使用します。

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

今のところ、以下のようなクエリにたどり着きました(Name, Marksを取得するため)。

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

) as UnPvt

解決方法は?

あなたのクエリは非常に近いです。を含む次のようなものを使用することができるはずです。 subject を最終的な選択リストに追加します。

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

参照 SQL Fiddleのデモを見る