Problem mit LöschAbfrage.. ältesten Datensatz beibehalten alle anderen löschen
Hallo,
ich habe eine Frage zu einer LöschAbfrage, wo ich nicht genau weis Sie aufzubauen.
Ich habe eine Tabelle mit X Spalten u.a. Ref und Anlagedatum
Der Wert Ref ist x mal vorhanden,
nun möchte ich alle Werte dieser Tabelle löschen bis auf den ältesten Wert
so das nur noch 1x der Wert in der Spalte REF übrig bleibt
Ich drehe mich ein Wenig im Kreis, vielleicht kann mir jemand helfen
ich habe eine Frage zu einer LöschAbfrage, wo ich nicht genau weis Sie aufzubauen.
Ich habe eine Tabelle mit X Spalten u.a. Ref und Anlagedatum
Der Wert Ref ist x mal vorhanden,
nun möchte ich alle Werte dieser Tabelle löschen bis auf den ältesten Wert
so das nur noch 1x der Wert in der Spalte REF übrig bleibt
Ich drehe mich ein Wenig im Kreis, vielleicht kann mir jemand helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246918
Url: https://administrator.de/forum/problem-mit-loeschabfrage-aeltesten-datensatz-beibehalten-alle-anderen-loeschen-246918.html
Ausgedruckt am: 23.12.2024 um 12:12 Uhr
6 Kommentare
Neuester Kommentar
moin KarlChristian
so wäre es eleganter gewesen
USE deine_tabelle
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @del1 int, @del2 int, @datum date
DECLARE cursor_del1 CURSOR scroll for
select distinct(ref), abfragedatum
from deine_tabelle
order by ref, abfragedatum
OPEN cursor_del1
FETCH NEXT FROM cursor_del1 INTO @del1, @datum
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE cursor_del2 CURSOR scroll for
select ref
from deine_tabelle
where ref=@del1
order by abfragedatum
OPEN cursor_del2
FETCH FIRST FROM cursor_del2 into @del2
FETCH NEXT FROM cursor_del2 into @del2
WHILE @@FETCH_STATUS = 0
BEGIN
delete from deine_tabelle
where current of cursor_del2
FETCH NEXT FROM cursor_del2 INTO @del2
END
CLOSE cursor_del2
DEALLOCATE cursor_del2
FETCH NEXT FROM cursor_del1 INTO @del1, @datum
END
CLOSE cursor_del1
DEALLOCATE cursor_del1
cu Rainer
so wäre es eleganter gewesen
USE deine_tabelle
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @del1 int, @del2 int, @datum date
DECLARE cursor_del1 CURSOR scroll for
select distinct(ref), abfragedatum
from deine_tabelle
order by ref, abfragedatum
OPEN cursor_del1
FETCH NEXT FROM cursor_del1 INTO @del1, @datum
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE cursor_del2 CURSOR scroll for
select ref
from deine_tabelle
where ref=@del1
order by abfragedatum
OPEN cursor_del2
FETCH FIRST FROM cursor_del2 into @del2
FETCH NEXT FROM cursor_del2 into @del2
WHILE @@FETCH_STATUS = 0
BEGIN
delete from deine_tabelle
where current of cursor_del2
FETCH NEXT FROM cursor_del2 INTO @del2
END
CLOSE cursor_del2
DEALLOCATE cursor_del2
FETCH NEXT FROM cursor_del1 INTO @del1, @datum
END
CLOSE cursor_del1
DEALLOCATE cursor_del1
cu Rainer