• Thank you for your reply.

    Here is my try till now, but not what I am wants :

    CREATE TABLE #TempTable (Rownumber INTEGER IDENTITY(1, 1),ROLLNO INTEGER,NAME VARCHAR(30),CLASS VARCHAR(30),RNK INTEGER)

    SET IDENTITY_INSERT #TempTable OFF

    INSERT into #TempTable

    select rollno,name,class,

    (CASE

    WHEN class = 'IT' THEN 1

    WHEN class = 'Science' THEN 2

    WHEN class = 'Arts' THEN 3

    WHEN class = 'Commerce' THEN 4

    WHEN class = 'Geography' THEN 5

    ELSE 6

    END) as rnk

    from student

    ORDER BY RNK

    select z.rollno,min(z.name),min(z.class),min(z.rownumber)

    from

    (

    SELECT ROLLNO, t.name,t.class,t.Rownumber,(t.Rownumber - o.Offset) AS XX,rnk

    FROM #TempTable t

    INNER JOIN (

    SELECT class, MIN(Rownumber) - 1 AS Offset

    FROM #TempTable

    GROUP BY class

    ) o ON o.class = t.class

    --order by t.rownumber,t.rollno

    ) z

    group by z.rollno

    DROP TABLE #TempTable