Seite 1 von 1

Maximum eines Feldes aus 2 Tabellen bestimmen

Verfasst: Di, 08. Okt 2013 11:34
von UliTs
Hallo allerseits,

ich habe zwei identische Tabellen (eine davon ist eine Archivtabelle).
Ich möchte das Maximum des Feldes BestAufNr aus den beiden Tabellen bestimmen.
Ich habe folgende Lösung programmiert, die glücklicherweise beim ADS :D rasend schnell ist:

Code: Alles auswählen

SELECT IIF( BestAufNr1>BestAufNr2,BestAufNr1,BestAufNr2 ) BestAufNr
FROM
(
SELECT 
     (SELECT TOP 1 BestAufNr FROM BKAufPos       ORDER BY BestAufNr DESC) BestAufNr1,
     (SELECT TOP 1 BestAufNr FROM BKAufPosArchiv ORDER BY BestAufNr DESC) BestAufNr2
FROM SYSTEM.IOTA
) BAuPOderBAuPA
Aber vielleicht hat noch jemand eine Idee, wie man dies (beim ADS) noch eleganter lösen kann :-) .

Uli

Re: Maximum eines Feldes aus 2 Tabellen bestimmen

Verfasst: Di, 08. Okt 2013 11:49
von nightcrawler
ich versuchs mal:

Code: Alles auswählen

select max(BestAufNr) as BestAufNr from
(
select max(BestAufNr) as BestAufNr from BKAufPos
union
select max(BestAufNr) as BestAufNr from BKAufPosArchiv 
) a
Index auf das Feld BestAufNr bei beiden Tabellen.

Re: Maximum eines Feldes aus 2 Tabellen bestimmen

Verfasst: Di, 08. Okt 2013 13:59
von UliTs
Ja, so hatte ich es zuvor auch :) .
Ich finde das auch viel eleganter, insbesondere, weil man so keine Probleme mit NULL-Werten bekommt (oder?).

Aber es ist auch viel langsamer: 281ms zu <1ms ohne max() und union .

Uli

Re: Maximum eines Feldes aus 2 Tabellen bestimmen

Verfasst: Di, 08. Okt 2013 14:17
von Wolfgang Ciriack
Ich denke, im ms-Bereich kann man damit leben :D

Re: Maximum eines Feldes aus 2 Tabellen bestimmen

Verfasst: Di, 08. Okt 2013 14:50
von UliTs
Wolfgang Ciriack hat geschrieben:Ich denke, im ms-Bereich kann man damit leben :D
Bei kleiner als 1ms ja, aber da die Aktion bis zu 300x aufgerufen wird, darf es nicht ein paar Hundertstel-Sekunden dauern :D :D