-- Unpivot table in sql

-- Unpivot means you can display your Horizontal data vertically (Note: it is used to view the data only)
-- I think I don't need to explain this; you will understand it easily by just looking at the example

-- I have created a simple example

-- Just copy, paste and run. And see the difference

-- Here I have taken a temp table and have inserted the value into that. (You also can play with your table)

Declare @Student table(ID int, name varchar(10), Maths int , English int , Science int)

-- @student is the name of the table
-- Insert values into the @student table

insert into @Student values(101, 'ashok' ,80 ,86 ,90)

insert into @Student values(105, 'vinod' ,50,80,90)
insert
into @Student values(106, 'sejal' ,90,50,90)

-- to check the values in a table you can select

select * from @Student

-- use pivot

select ID, Name, Subject, Marks from

(
select
ID, name, Maths , English , Science from @Student
)
as source
unpivot

(

Marks for Subject in ([Maths],[English],[Science])

-- Here the Subject like header can take anything according to the format

) as unpvt

-- I think I need not explain more