so, zur Entspannung noch einmal ein PAL gelöst (PAL - Problem anderer Leute; Per Anhalter durch die Galaxis ...)
Code: Alles auswählen
SELECT "T1".*, "T2".*, "T3".* FROM
(SELECT DISTINCT CASE WHEN (SELECT COUNT( "ID" ) FROM "DBTest" WHERE "Wer" = 'A' AND "dbok" = 0) > (SELECT COUNT( "ID" ) FROM "DBTest" WHERE "Wer" = 'E' AND "dbok" = 0) THEN (SELECT COUNT( "ID" ) FROM "DBTest" WHERE "Wer" = 'A' AND "dbok" = 0 AND "ID" <= "a"."ID") ELSE (SELECT COUNT( "ID" ) FROM "DBTest" WHERE "Wer" = 'E' AND "dbok" = 0 AND "ID" <= "a"."ID") END AS "Counter" FROM "DBTest" AS "a" WHERE "dbok" = 0) AS "T1" LEFT JOIN
(SELECT (SELECT COUNT("ID") FROM "DBTest" WHERE "Wer" = 'A' AND "dbok" = 0 AND "ID" <= "a"."ID") AS "lfdNr.", "a".* FROM "DBTest" AS "a" WHERE "a"."Wer" = 'A' AND "a"."dbok" = 0) AS "T2" ON "T1"."Counter" = "T2"."lfdNr." LEFT JOIN
(SELECT (SELECT COUNT("ID") FROM "DBTest" WHERE "Wer" = 'E' AND "dbok" = 0 AND "ID" <= "a"."ID") AS "lfdNr.", "a".* FROM "DBTest" AS "a" WHERE "a"."Wer" = 'E' AND "a"."dbok" = 0) AS "T3" ON "T1"."Counter" = "T3"."lfdNr."
Danach frage ich nach dem ersten Kriterium und nach dem zweiten Kriterium ab. Die Nummerierung des Counters stellt zwangsläufig gleichzeitig die Maximalnummerierung dar. So kann kein Datensatz verloren gehen.
Gruß
Robert