--Creating Table dup1
CREATE TABLE dup1
(
cola VARCHAR(10),
colb VARCHAR(10)
);
--Insertion of records
INSERT INTO
I guess you want just to see record once in your view because you say you want to keep original data. So you should use UNION instead of UNION ALL in your view
CREATE VIEW V_Dup as
SELECT * FROM dup1 UNION
SELECT * FROM dup2;
Otherwise if you want to delete all the duplicated rows from table generating view you will have to do something like this:
;WITH DUP_CTE AS
(
SELECT cola, colb,ROW_NUMBER() OVER (PARTITION BY cola,colb ORDER BY (SELECT 0)) RN FROM V_Dup
)
DELETE FROM DUP_CTE
WHERE EXISTS( SELECT 0 FROM dup_cte AS c WHERE c.cola=dup_cte.cola AND c.colb=dup_cte.colb AND RN <> 1);
If you want to delete only duplicates:
;WITH DUP_CTE AS
(
SELECT cola, colb,ROW_NUMBER() OVER (PARTITION BY cola,colb ORDER BY (SELECT 0)) RN FROM V_Dup
)
DELETE FROM DUP_CTE
WHERE RN <> 1;
But you will need a primary key in your tables for the last two solutionz.