Hallo Peter (und andere die evtl. mitlesen),
ich habe das ganze jetzt etwas umstaendlicher aber einigermaßen performant über zwei Zwischentabellen gelöst.
In etwa so:
insert into tmp\_table
select
id, lfd\_nr
from ursprungs\_tabelle;
-- Block
insert into tmp\_table2
select
id
,min(lfd\_nr) -- column: lfd\_nr
,1 -- neue\_lfd\_nr
-- im folgenden mit Werten 2,..6 wiederholen
from tmp\_table
group by 1, 2, 4;
delete from tmp\_table
where exists(
select
id, lfd\_nr
from
tmp\_table2
where
tmp\_table2.id = tmp\_table.id
and tmp\_table2.lfd\_nr = tmp\_table.lfd\_nr
);
-- die letzten 2 Statements (insert / delete) mit Werten 2,3,4,5,6
-- fuer den Insert wiederholen
...
-- und jetzt
select
insert into tmp\_table
select
ursprungs\_tabelle.id,
,tmp\_table2.neue\_lfd\_nr
,ursprungs\_tabelle.
from
ursprungs\_tabelle u
,tmp\_table2 t
where
t.id = u.id
and t.lfd\_nr = u.lfd\_nr;
Vielleicht nicht die schönste Lösung, aber hat im Vergleich zu vorher
(Cursor-Verarbietung unter COBOL) einen mächtigen Performanceschub gebracht…
Vielleicht hat ja noch jemand Verbesserungsideen.
gruss
bernhard