, :
DECLARE @SAMPLEDATA TABLE(NUMBER VARCHAR(10), OPERATION_DATE DATETIME, STATUS VARCHAR(20), WEIGHT_BEFORE INT, WEIGHT_AFTER INT)
INSERT INTO @SAMPLEDATA VALUES
('A1', '2016-11-10 23:18:59.000' , 'START' , 3077 , 3077),
('A1', '2016-11-10 23:47:59.000' , 'END' , 3077 , 2741),
('A1', '2016-11-10 23:48:59.000' , 'START' , 2741 , 2741),
('A1', '2016-11-10 23:50:59.000' , 'END' , 2741 , 2510),
('B3', '2016-11-10 23:18:59.000' , 'START' , 300 , 300),
('B3', '2016-11-10 23:47:59.000' , 'END' , 290 , 287)
;WITH CTE
AS
(
SELECT SNO,NUMBER,OPERATION_DATE,WEIGHT_BEFORE,WEIGHT_AFTER,STATUS FROM (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 100))SNO,* FROM @SAMPLEDATA)A
)
SELECT NUMBER,OPERATION_DATE [START_DATE],
(SELECT OPERATION_DATE FROM CTE T2 WHERE T2.SNO=T1.SNO+1)END_DATE,
WEIGHT_BEFORE,
(SELECT WEIGHT_AFTER FROM CTE T2 WHERE T2.SNO=T1.SNO+1)WEIGHT_AFTER
FROM CTE T1 WHERE STATUS='START'
----------------------------------------------------------------------
--NUMBER START_DATE END_DATE WEIGHT_BEFORE WEIGHT_AFTER
----------------------------------------------------------------------
A1 2016-11-10 23:18:59.000 2016-11-10 23:47:59.000 3077 2741
A1 2016-11-10 23:48:59.000 2016-11-10 23:50:59.000 2741 2510
B3 2016-11-10 23:18:59.000 2016-11-10 23:47:59.000 300 287
----------------------------------------------------------------------