Usuń skrypt SQL Server 2008
Oto sytuacja, którą próbuję rozwiązać. Mam tabelę załadowaną duplikatami. Stało się tak, ponieważ podobne wiersze były ładowane z dwóch różnych źródeł. To jest załatwione w pakiecie.
Ale chcę usunąć te wiersze, które są duplikatami. Nie ma tu żadnego atrybutu klucza (nie mogę użyć żadnego PK). Dwójkaźródła są Cleveland City i Ohio State. Mam kolumnę, która pokazuje, z którego źródła został załadowany wiersz (DataSource
kolumna).
Tak więc w rzędzie pokazuje jakDataSource = 'Cleveland'
lubDataSource = 'OhioState'
.
Poniżej znajduje się próbka, z którą utknąłem. Czy moglibyście mieć inne podejście do usuwania tych wierszy, które nie działają dobrze? Jeszcze raz dziękuję chłopaki .. Nie sądzę, że sposób, w jaki próbuję się zbliżyć, jest nawet poprawny ...
IF OBJECT_ID('tempdb..#Ohio') IS NOT NULL
BEGIN
DROP TABLE #Ohio
END
;WITH Oh AS
( SELECT ROW_NUMBER()OVER
(
PARTITION by UID,ADDRESS,CITY,STATE,Zip
ORDER BY
UID
) AS IA,UID,ADDRESS,City,State,Zip FROM F_staRes
)
SELECT * INTO #Ohio FROM Oh WHERE IA> 1 AND DataSource='Ohio'
IF OBJECT_ID('tempdb..#Clevland') IS NOT NULL
BEGIN
DROP TABLE #Clevland
END
;WITH Cle AS
( SELECT ROW_NUMBER()OVER
(
PARTITION by UID,ADDRESS,CITY,STATE,Zip
ORDER BY
UID
) AS CE,UID,ADDRESS,City,State,Zip FROM F_staRes
)
SELECT * INTO #Clevland FROM Cle WHERE CE> 1 AND DataSource!='Ohio'
select * from #Clevland--I want to delete this records
Intersect
select * from #Ohio