Hello ,
You have to use
PIVOT
to get the required OP .
For reference :
Simple Way To Use Pivot In SQL Query
Try this
create table #tmp
(
srno int ,
val int ,
name varchar(10)
)
insert into #tmp values (1,20,'p')
insert into #tmp values (2,30,'p')
insert into #tmp values (3,40,'r')
insert into #tmp values (4,50,'r')
insert into #tmp values (1,60,'q')
insert into #tmp values (2,70,'q')
insert into #tmp values (3,80,'s')
insert into #tmp values (4,90,'s')
insert into #tmp values (1,20,'r')
insert into #tmp values (2,42,'r')
insert into #tmp values (3,52,'p')
insert into #tmp values (4,25,'p')
insert into #tmp values (1,25,'s')
insert into #tmp values (2,32,'s')
insert into #tmp values (3,56,'q')
insert into #tmp values (4,21,'q')
select * from
(select srno , name , val from #tmp)src
pivot
(min(val) for name in ([p],[q],[r],[s]) ) pv
and OP will be
srno p q r s
1 20 60 20 25
2 30 70 42 32
3 52 56 40 80
4 25 21 50 90
Thanks