Data Warehousing Community Forum
February 08, 2012, 10:25:04 am

  Show Posts
Pages: [1]
1  Databases / Microsoft SQL Server / Re: Deletion of Duplicate records from a table (SQL)? on: March 21, 2008, 02:57:01 pm
Table Structure is

Sno     Sal
1        1000
2        4000
3        2000
4        3000
1        1000
2        4000
1        1000
2        4000
4        3000
3        2000
2        4000

Approach - 1
WITH DUPLICATEROW (ROW, GROUPROW,SNO,SAL)
AS
(
SELECT ROW,
          GROUPROW = CASE WHEN SNO=B.SNO
                                  THEN
                                         (SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY SNO) AS ROW,
                                                                                         SNO,SAL FROM TEMP1
                                                                                         ) AS A
                                  WHERE
                                                A.SNO=B.SNO AND
                                                A.ROW<=B.ROW)
                                  END,
          SNO,
          SAL
FROM
       (SELECT
                     ROW_NUMBER() OVER (ORDER BY SNO) AS ROW,
                     SNO,
                     SAL
        FROM
                     TEMP1
       )AS B
)
DELETE FROM DUPLICATEROW WHERE GROUPROW<>1

Approach – 2 ( Three step approach)
SELECT DISTINCT * INTO #DUPES FROM TEMP1

DELETE FROM TEMP1 WHERE SNO IN (SELECT SNO FROM TEMP1 GROUP BY SNO HAVING COUNT(*) >=2)

INSERT TEMP1
       SELECT * FROM #DUPES
Pages: [1]