EMPLOYEE_ID | ATTENDANCE_DATE |
A001 | 2011-01-01 |
A001 | 2011-01-01 |
A002 | 2011-01-01 |
A002 | 2011-01-01 |
A002 | 2011-01-01 |
A003 | 2011-01-01 |
So how can we delete those duplicate data?
Solution
First, insert an
identity
column in that table by using the following code:
Hide Copy Code
ALTER TABLE dbo . ATTENDANCE ADD AUTOID INT IDENTITY( 1,1)
Now the table data will be like the following table:
EMPLOYEE_ID | ATTENDANCE_DATE | AUTOID |
A001 | 2011-01-01 | 1 |
A001 | 2011-01-01 | 2 |
A002 | 2011-01-01 | 3 |
A002 | 2011-01-01 | 4 |
A002 | 2011-01-01 | 5 |
A003 | 2011-01-01 | 6 |
Check the
AUTOID
column. Now we will start playing the game with this column.
Now use the following code to find out the duplicate rows that exist in the table.
Hide Copy Code
SELECT * FROM dbo . ATTENDANCE WHERE AUTOID NOT IN (SELECT MIN( AUTOID) _
FROM dbo . ATTENDANCE GROUP BY EMPLOYEE_ID, ATTENDANCE_DATE)
The above code will give us the following result:
EMPLOYEE_ID | ATTENDANCE_DATE | AUTOID |
A001 | 2011-01-01 | 2 |
A002 | 2011-01-01 | 4 |
A002 | 2011-01-01 | 5 |
Ultimately, these are the duplicate rows which we want to delete to resolve the issue. Use the following code to resolve it.
Hide Copy Code
DELETE FROM dbo . ATTENDANCE WHERE AUTOID NOT IN (SELECT MIN( AUTOID) _
FROM dbo . ATTENDANCE GROUP BY EMPLOYEE_ID, ATTENDANCE_DATE)
Now check the data. No duplicate rows exist in the table.
No comments:
Post a Comment