试试这个
select
rollno, name, subject,
english_score, french_score, german_source, spanish_score
from
(select
RollNo, name, subject,
decode(subject, "English", score, "") English_score,
decode(subject, "French", score, "") French_score,
decode(subject, "Germany", score, "") German_score,
decode(subject, "Spanish", score, "") Spanish_score,
count(*)
from
tbl
group by
RollNo, name, subject,
decode(subject, "English", score, "") English_score,
decode(subject, "French", score, "") French_score,
decode(subject, "Germany", score, "") German_score,
decode(subject, "Spanish", score, "") Spanish_score)) tbl2
Oracle 中有一个选项可以不显示列。我认为这是“noprint”,我只是不记得语法。你可以把它放在count(*)旁边:
Select
RollNo, name, subject,
decode(subject, "English", score, "") English_score,
decode(subject, "French", score, "") French_score,
decode(subject, "Germany", score, "") German_score,
decode(subject, "Spanish", score, "") Spanish_score,
count(*) noprint
from
tbl
group by
RollNo, name, subject,
decode(subject, "English", score, "") English_score,
decode(subject, "French", score, "") French_score,
decode(subject, "Germany", score, "") German_score,
decode(subject, "Spanish", score, "") Spanish_score