2016-07-21 13 views
0

Benötigt SQL-Skripts zum Entfernen doppelter Datensätze. Im Folgenden finden Sie die Beispieldaten • Beispiel 1: BevorSQL-Skripts zum Entfernen doppelter Datensätze

das Skript Lauf
CreatedWhen    Status CVGUID  LocGUID 
----------------------- ---------------- --------------- ------------- 
2015-11-04 11:00:00.667 CUR 65400270  5300610  
2015-11-04 10:44:36.327 PRV 65400270  5300610  
2015-11-04 10:43:03.340 INA 65400270  5300610  
2015-11-04 10:39:34.100 INA 65400270  5300610  
2015-11-04 10:35:17.880 INA 65400270  5300610  

• Beispiel 1: Nach dem Ausführen des Skripts

CreatedWhen    Status ClientVisitGUID LocationGUID 
----------------------- ---------------- --------------- ------------- 
2015-11-04 11:00:00.667 CUR 65400270  5300610  

• Beispiel 2: Vor dem Ausführen des Skripts

CreatedWhen    Status CVGUID   LocGUID 
----------------------- ------ ---------------- ------------- 
2015-11-09 04:41:16.340 CUR 65500270   6000610  
2015-11-09 04:40:00.527 PRV 65500270   6000610  
2015-11-09 04:38:13.790 INA 65500270   5300610  
2015-11-09 04:33:23.843 INA 65500270   5300610  

• Beispiel 2: Nach Ausführung des Skripts

• Beispiel 3: Vor dem Ausführen des Skripts

CreatedWhen    Status CVGUID   LocGUID 
----------------------- ------ ---------------- ------------- 
2015-11-09 06:07:19.880 CUR 65600270   6000610  
2015-11-09 06:06:48.970 PRV 65600270   5300610  
2015-11-09 06:06:24.890 INA 65600270   7100610  
2015-11-09 06:06:00.330 INA 65600270   6000610  
2015-11-09 06:03:52.070 INA 65600270   5300610  

• Beispiel 3: Nach dem Ausführen des Skripts (Es sollte keine Veränderung)

CreatedWhen    Status CVGUID   LocGUID 
----------------------- ------ ---------------- ------------- 
2015-11-09 06:07:19.880 CUR 65600270   6000610  
2015-11-09 06:06:48.970 PRV 65600270   5300610  
2015-11-09 06:06:24.890 INA 65600270   7100610  
2015-11-09 06:06:00.330 INA 65600270   6000610  
2015-11-09 06:03:52.070 INA 65600270   5300610  
+0

Hinzufügen was Sie versucht haben? – TheGameiswar

+0

Mögliches Duplikat von [Wie kann ich doppelte Zeilen entfernen?] (Http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows) –

+0

wo ist das SQL-Skript? – shishir

Antwort

0
  1. Teilen Sie Ihre Daten in Spalten mit Leerzeichen als Trennzeichen
  2. Verwenden Sie ROW_NUMBER() OVER (PARTITION VON CVGUID, LOCGUID ORDER BY CreatedWhen), um Duplikate
  3. zu markieren
  4. löschen alle Zeilen mit row_number> 1

Wenn Sie nicht wissen, wie die Schritte zur Durchführung von oben Ich würde empfehlen Antworten Überlauf mit Google oder Stapel zu finden, da diese recht häufig auftretende Probleme

0

Versuchen Sie Folgendes:

With cte as 
(
    SELECT MAX(CreatedWhen) CreatedWhen, CVGUID, LocGUID 
    INTO #temp 
    FROM TableName 
    GROUP BY CVGUID, LocGUID 
) 
With cte2 as 
(
    SELECT CreatedWhen, ROW_NUMBER() OVER (ORDER BY CreatedWhen DESC PARTITION BY CVGUID) row_num, CVGUID, LocGUID 
    FROM cte 
) 
SELECT CreatedWhen, CASE WHEN row_num = 1 THEN 'CUR' WHEN row_num = 2 THEN 'PRV' ELSE 'INA' END Status, CVGUID, LocGUID 
FROM cte2; 

Lassen Sie mich wissen, wenn es ein Problem mit der Lösung gibt.

Verwandte Themen