Reputation: 49
My problem is like this question but I am fetching data from different table:
Name ID Subject-name obtained-marks
gumman 9 English 3
gumman 9 Islamic-Studies 4
gumman 9 Pak Studies 3
I want output like this:
ID Name English Islamic-Studies Pak-studies
9 gumman 3 4 3
How can I do this?
Upvotes: 1
Views: 896
Reputation: 79919
Try this:
Select s.ID, s.Name,
MAX(case WHEN s.SubjectName = 'English' THEN s.ObtainedMarks end) as 'English',
MAX(case WHEN s.SubjectName = 'Islamic-Studies' THEN s.ObtainedMarks end) as 'Islamic-Studies',
MAX(case WHEN s.SubjectName = 'Pak Studies' THEN s.ObtainedMarks end) as 'Pak-studies'
From Students s
GROUP BY s.ID, s.Name
Upvotes: 2
Reputation: 138960
select ID,
Name,
[English],
[Islamic-Studies],
[Pak Studies]
from YourTable
pivot
(
min([obtained-marks]) for [Subject-name] in ([English],
[Islamic-Studies],
[Pak Studies])
) as P
Upvotes: 4