Wahrscheinlich ist die Antwort von [USER=5104]@Georg V.[/USER] der (Haupt)Grund, warum Du das nicht findest.
Es wird einfach nicht so gemacht, wie Du es haben wolltest. Die Gründe für das andere normale Verfahren hat [USER=5104]@Georg V.[/USER] auch bereits genannt. Sie liegen eigentlich in der Natur der Sache.
1. Du würdest nicht ohne Not eine große Tabelle 2x abfragen, wenn 1x reicht.
2. Du stellst nach Möglichkeit keine Daten nebeneinander, um sie zu verarbeiten, sondern untereinander. Nebeneinander ist eine Strukturänderung in SQL, untereinander bleiben alle Typen identisch.
[code]
-- haben
SELECT
SUM (betrag) betrag_h
FROM salden
WHERE bschluessel = 'h';
-- soll
SELECT
SUM (-1*betrag) betrag_s
FROM salden
WHERE bschluessel = 's';
-- saldo with subselect
select (SELECT
SUM (betrag) betrag_h
FROM salden
WHERE bschluessel = 'h')+
(SELECT
SUM (-1*betrag) betrag_s
FROM salden
WHERE bschluessel = 's')
as saldo;
-- saldo simply summed together (including sign twist to match question)
-- (which is a detail question of the model)
SELECT
SUM (iif(bschluessel='s', -1, 1)*betrag) saldo
FROM salden;
[/code]
Das letzte Statement ist identisch zu der Struktur von #4.
Angenommen, man benötigt keinen Vorzeichenwechsel, wäre es nur noch:
[code]
SELECT
SUM (betrag) saldo
FROM salden;
[/code]
Angenommen, das Vorzeichen wäre nicht als h oder s kodiert, sondern als Zahl -1 oder +1, wäre es so:
[code]
SELECT
SUM (bschluessel*betrag) saldo
FROM salden;
[/code]
Müsste man dennoch filtern, wie in der Anfrage, dann eben:
[code]
SELECT
SUM (bschluessel*betrag) saldo
FROM salden
where <Bedingung für alle zu summierenden Records>
[/code]