2017-01-19 1 views
1

Ich versuche, eindeutige Zeilen aus einer SQL-Tabelle, die Duplikate hat auszuwählen. Ich habe eine Spalte OrderId und dies sollte für jede Zeile eindeutig sein. Also versuche ich alle Spalten (30) mit eindeutiger orderId auszuwählen. Ich habe diese Abfrage versucht, aber alle Zeilen zurückgegeben. Gleiches mit groupByWählen Sie eindeutige Zeilen aus einer Sql Server 2008-Tabelle

"SELECT DISTINCT (OrderId)AS[OrderId], * from tableName" 
+1

Wenn alle Zeilen ist zurückkehrt, bedeutet es, dass es etwas anderes über jede Zeile ist. –

+2

Wenn 'OrderId' für jede Zeile eindeutig zuzuordnen sind, dann sind Sie w bekomme wegen der 'OrderId' selbst alle Zeilen. Zeigen Sie einige Beispieldaten und was Sie für Ergebnisse wollen. –

+1

Auswahl Anzahl (*), Bestell-ID aus TabelleName Gruppe nach Bestell-ID mit Anzahl (Bestell-ID)> 1 –

Antwort

0

SpM Ihre Frage ist ziemlich vage. Sie möchten eindeutige Zeilen aus einer Tabelle erhalten, die Duplikate enthalten. Welche Spalte enthält Duplikate? Sie müssen die Spalte oder die Spalten mit Duplikaten definieren, von denen Sie eindeutige Werte erhalten möchten.

Wie Sie bereits erwähnt haben, ist die Spalte OrderID für jede Zeile eindeutig. Sie wählen eindeutige eindeutige Zeilen von Ihrem Tisch aus, so dass natürlich alle Zeilen zurückkommen.

Was Sie tun müssen, ist Ihre SQL zu ändern, um „Wählen Sie verschiedene DuplicateColumnName von Tablename Ihre gewünschte Ergebnis zu erhalten

1

Eine Lösung sein könnte.

Anzahl Reihen von OrderId und erhalten diese, wo RN = 1

WITH un AS 
(
    SELECT OrderId, Field1, Field2, Field3, 
      ROW_NUMBER() OVER (PARTITION BY OrderId ORDER BY OrderId) AS RN 
    FROM TABLE 
) 
SELECT OrderId, Field1, Field2, Field3 
FROM un 
WHERE RN = 1 
ORDER BY OrderId; 
-1
select t.* from 
(
    select orderid,row_number() over (partition by orderid order by orderid) r from tablename 
) t 
where r=1