• DROP table #empl

    CREATE TABLE #empl

    (

    row_id int,

    ename varchar(120),

    job varchar(120),

    sal varchar(100)

    )

    INSERT #empl VALUES

    ('4','ram','IT','60000'),

    ('4','ram','IT','60000'),

    ('4','ram','IT','60000'),

    ('4','ram','IT','60000');

    WITH OrderedData AS (

    SELECT row_id, ename, job, sal,

    rn = ROW_NUMBER() OVER(PARTITION BY row_id, ename, job, sal ORDER BY row_id, ename, job, sal)

    FROM #empl

    ) DELETE OrderedData WHERE rn > 1

    SELECT * FROM #empl

    “Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

    For fast, accurate and documented assistance in answering your questions, please read this article.
    Understanding and using APPLY, (I) and (II) Paul White
    Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden