ID Name
1 A
2 B
3 A
5 A
6 A
7 B
10 B
Aus diesen Aufzeichnungen möchte ich nur unter Datensätze, Ist es möglich?So entfernen Sie aufeinanderfolgende doppelte Datensätze aus der Datentabelle?
ID Name
1 A
2 B
3 C
4 A
7 B
9 C
10 B
ID Name
1 A
2 B
3 A
5 A
6 A
7 B
10 B
Aus diesen Aufzeichnungen möchte ich nur unter Datensätze, Ist es möglich?So entfernen Sie aufeinanderfolgende doppelte Datensätze aus der Datentabelle?
ID Name
1 A
2 B
3 C
4 A
7 B
9 C
10 B
Es sieht so aus, als ob Sie nach dem Entfernen von zusammenhängenden Werten fragen.
Wenn wir davon ausgehen, dass die ID
Werte als kontinuierlich steigend ohne Lücken behandelt werden, kann es ziemlich einfach getan werden - machen Sie einfach einen Link zu sich selbst und fordern Sie, dass die vorherige Zeile einen anderen Wert hat, oder die vorherige Zeile nicht vorhanden (die erste Zeile enthalten):
select cur.ID, cur.[Name]
from @data cur
left outer join @data prev on prev.[ID] = cur.[ID] - 1
where prev.ID is null or prev.[Name] <> cur.[Name]
order by cur.ID
Es ist schwieriger, wenn wir tun nicht davon ausgehen, die ID
Werte zusammenhängend sein müssen; Hier verwende ich die ROW_NUMBER()
Funktion zu simulieren:
select cur.ID, cur.[Name]
from (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) cur
left outer join (select ID, [Name], Row = ROW_NUMBER() over (order by ID) from @data) prev
on prev.[Row] = cur.[Row] - 1
where prev.ID is null or prev.[Name] <> cur.[Name]
order by cur.ID
Es kann viel bessere Möglichkeiten sein.
In diesen beide, ich verwende:
declare @data table (ID int not null, [Name] char(1) not null);
insert @data (ID, [Name]) values (1,'A'),(2,'B'),(3,'C'),(4,'A'),(5,'A'),
(6,'A'),(7,'B'),(8,'B'),(9,'C'),(10,'B');
die Ihre erwartete Ausgabe zu passen scheint (aber nicht Ihren erklärten Eingang)
wobei 'ID tat = 3'/'C' kommen von? und woher kamen 'ID = 4/A' und' ID = 9/C'? –
Wenn Sie Linq verwenden, um mit Ihrer Datenbank zu interagieren, sollten Sie .Distinct() immer dann verwenden können, wenn Sie die Spalte Name verwenden und die Duplikate auf diese Weise entfernen. – Xariez