SELECT
Code,Bscid, max(st_time) st_time,isnull(max(edtime),max(st_time)) as ed_time,min([status]) [status]
FROM
(
SELECT row_number() OVER(ORDER by Code,Bscid, st_time) as srno, Code,Bscid, st_time,NULL as edtime,[status] FROM A
WHERE [status]='start'
UNION
SELECT row_number() OVER(ORDER by Code,Bscid, st_time) as srno,Code,Bscid, NULL st_time,st_time as edtime,[status] FROM A
WHERE [status]='end'
)
as temp
group by srno,Code,Bscid
Happy Coding!
:)