Danke an Jelly und mkinzler,
aufbauend auf Euren Hinweisen habe ich es geschafft und dabei sogar den Status eingebaut. Die entscheidenden Ideen waren, MIN() zu verwenden mit passender Sortierung. Zusätzlich werden GROUP BY und ORDER BY sowie weiterhin DISTINCT benötigt. So sieht jetzt mein Code aus:
SQL-Code:
INSERT INTO STR_Namen
( ID, Aendg_per,
Name_Sort, Name_lang, Name_kurz )
SELECT DISTINCT str_id,
max(Geltung),
min(Name_sort),
SUBSTR(min(Status || Name46), 2,50),
SUBSTR(min(Status || Name22), 2,50)
FROM Quelle_Post_St
GROUP BY Str_id, Name_sort
ORDER BY Str_id, Name_sort
Alle Informationen werden so übernommen wie gewünscht; der bevorzugte Status 'G' musste vorher durch '0' (Null) ersetzt werden. Meine Idee dabei ist, dass der Status vor die (variablen) Namen gesetzt wird, dann der Minimalwert übernommen und vor dem Speichern wieder entfernt wird.
Das Ganze läuft auch in akzeptabler Geschwindigkeit von weniger als zwei Minuten (nicht gemessen, nur gefühlt - bei 512 MB
RAM).
Danke für Eure Hilfe! Jürgen