select p.studid,p.val as edateval, q.val as ldateval
from
(
select studid,dates,val,row_number() over (partition by studid order by dates) as seq
from (select studid,edate,edate1,edate2 from table )t
unpivot (val for dates in (edate,edate1,edate2))u
)p
inner join
(
select studid,dates,val,row_number() over (partition by studid order by dates) as seq
from (select studid,ldate,ldate1,ldate2 from table )m
unpivot (val for dates in (ldate,ldate1,ldate2))n
)q
on q.studid=p.studid
and q.seq=p.seq
------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/