1 ;WITH res1 AS 2 ( 3 SELECT * FROM 4 ( 5 SELECT ROW_NUMBER() OVER (PARTITION BY F2 ORDER BY F1) AS rn,F1,F2 FROM dbo.test 6 ) a WHERE a.rn=1 7 ), 8 res2 AS 9 ( 10 SELECT * FROM ( 11 SELECT ROW_NUMBER() OVER (PARTITION BY F2 ORDER BY F1) AS rn,F1,F2 FROM dbo.test 12 ) b WHERE b.rn=2 13 ) 14 SELECT res1.F2,CONVERT(VARCHAR(50),DATEDIFF(ms,res1.F1,res2.F1)) FROM res1 15 INNER JOIN res2 16 on res1.F2=res2.F2